可能重复:
这是一个场景:我创建了一个使用他们的Web服务API挂钩到商业CRM产品的应用程序,不幸的是,根据用户创建自定义字段的方式,每个安装都有不同的架构。也可以随时修改此架构。此应用程序将安装在客户位置,即使在更改其字段结构时也需要运行。
为了插入或更新记录,我首先调用他们的Project.GetSchema()方法,该方法根据当前字段集返回XSD文件,然后我可以调用Project.AddProject()方法,传入XML包含项目数据的文件。
我的问题是:在运行时从XSD文件生成XML的最佳方法是什么?我需要能够检查字段是否存在,并且只有在它们存在时才填写它们(例如,如果客户删除或重命名某些字段)。
我真的不希望应用程序尝试使用xsd.exe动态重新编译类。必须有一个更好的方法。
[更新]我当前正在研究的解决方案是基本解析XSD文件,因为每个安装的大部分架构都是相同的。这只是一个丑陋的解决方案,我希望有更好的方法。我遇到的最大问题是他们的模式使用xsd:sequence,因此将事物放在不同的顺序总是会破坏验证。
对于其他人来说:给出约束的最佳解决方案,在运行时创建XML并使用.NET,可能是第一个链接: Is there a class to generate a sample XML document from XSD schema in .NET
至少,这就是我要尝试的:)。