2012-03-07 56 views
0

我是新来的XML。我有一个文件,其中有多个XML记录,如下所示:如何在C#中使用XSD架构在单个文件中验证多个XML记录?

<event> //Record 1 
<sequence>1</sequence> 
<date>5-Feb-2012</date> 
<time>00:00:42</time> 
<severity>0</severity> 
<errorcode>0</errorcode> 
</event> 
<event> //Record 2 
<sequence>2</sequence> 
<date>5-Feb-2012</date> 
<time>00:00:51</time> 
<severity>0</severity> 
<errorcode>0</errorcode> 
</event> 

我需要验证此输入文件。我写了一个模式下面给出:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="event"> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="sequence" type="xs:integer"/> 
      <xs:element name="date" type="xs:date"/> 
      <xs:element name="time" type="xs:time"/> 
      <xs:element name="severity" type="xs:integer"/> 
      <xs:element name="errorcode" type="xs:integer"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 
</xs:schema>   

这工作,如果我在文件中只有一个记录,并抛出异常,说:“有多个根元素”。

回答

0

这就像所说的异常:一个XML文档只能有一个根元素。你需要这样的东西:

<root> 
    <event></event> 
    <event></event> 
</root> 
+0

嗨约翰..感谢您的答复。无论如何无需修改文件即可解决问题吗? – user1254073 2012-03-07 08:43:33

+0

我从来没有尝试过,但你可以尝试通过使用XmlReader.Create(源,新的XmlReaderSettings {ConformanceLevel = ConformanceLevel.Fragment})创建一个'XmlReader';'这应该读取一个片段,但我不知道它是否会阅读多个。 – 2012-03-07 13:55:27