我有一个XSD文件,里面有很多元素。 仅使用该XSD文件的一部分,我需要验证传入的XML文件。
例如:
这是有效的XML
<in attr1="9" attr2="0" attr3="0" />
这是XSD文件。只需要元素“FindPerson”下名为“In”的元素来验证XML文件。
<xs:element name="WS">
<xs:complexType>
<xs:sequence>
<xs:element name="ELEMENT1">
<xs:complexType>
<xs:sequence>
<xs:element name="FindPerson">
<xs:complexType>
<xs:sequence>
<xs:element name="In">
<xs:complexType>
<xs:attribute name="attr1" type="xs:int"/>
<xs:attribute name="attr2" type="xs:boolean" use="optional" default="0"/>
<xs:attribute name="attr3" type="xs:boolean" use="optional" default="0"/>
</xs:complexType>
</xs:element>
...
有没有办法在C#中只用一部分XSD文件验证XML文件?
答案 0 :(得分:1)
这实际上可以通过您的一些工作来实现,并且假设您的XSD确实是使用俄罗斯玩偶样式(所有内容嵌套)创作的,就像截断的XSD暗示的一样。
一种简单的方法是遵循以下步骤:
这里的想法是在内存中创建您需要的模式。如果内容模型更复杂(不是俄罗斯娃娃),那么事情就很容易复杂到不可行的程度。
答案 1 :(得分:0)
您需要重新构建XSD。使所有元素兄弟姐妹(在顶层)。在定义关系时,使用element ref=...
来引用另一个。然后你的XSD将能够验证任何顶级元素。