C# 验证两个XML模式的兼容性
是否有.NET调用来验证一个XML架构是否与另一个向后兼容?否。您必须使用C# 验证两个XML模式的兼容性,c#,xml,f#,xsd,C#,Xml,F#,Xsd,是否有.NET调用来验证一个XML架构是否与另一个向后兼容?否。您必须使用XmlSchema类来解析这两个架构,然后编写进行比较的代码 XML比较/差异无法解决这一问题,因为两个XSD甚至可以完全相同,并且具有非常不同的XML表示形式—例如: <xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns="http://tempuri.or
XmlSchema
类来解析这两个架构,然后编写进行比较的代码
XML比较/差异无法解决这一问题,因为两个XSD甚至可以完全相同,并且具有非常不同的XML表示形式—例如:
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="test">
<xs:complexType>
<xs:sequence>
<xs:element name="str" type="xs:string"/>
</xs:sequence>
<xs:attribute name="num" type="xs:int"/>
</xs:complexType>
</xs:element>
</xs:schema>
及
这是否意味着模式之间存在超集/子集关系?…如果是这样,API可能会提供您可以分析以确定的输出。我相信这意味着超集关系,是的。但从那篇文章到库本身的链接已断开()。安装程序的下载链接位于文章顶部。看起来像是XmlDiff的重载。比较使用diffgramWriter
arg可能会执行您想要的操作。
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="test" type="test">
</xs:element>
<xs:complexType name="test">
<xs:sequence>
<xs:element name="str" type="xs:string"/>
</xs:sequence>
<xs:attribute name="num" type="xs:int"/>
</xs:complexType>
</xs:schema>