XML异常:检测到多个文档元素。

3

我以一种非常简单的方式读取XML文件:

XmlTextReader reader = new XmlTextReader(dataPath);

while(reader.Read()){ 
    switch (reader.Name){
        case "language":
            Debug.Log(reader.ReadString());
            break;
        case "file":
            Debug.Log(reader.ReadString());
            break;
        case "arg":
            Debug.Log(reader.ReadString());
            break;
    }

我的XML如下所示:

}

其中我的xml是这样的:

<?xml version="1.0" encoding="ISO-8859-1"?>
 <config>
       <language>EN-US</language>
       <file>\File\Doc\sample.txt</file>
</config>
 <data>
       <arg>LKR</language>
</dara>

我的第一个问题是:

XmlException: Multiple document element was detected. file:///C:/prj/as/sample.xml Line 7, position 2.
Mono.Xml2.XmlTextReader.ReadStartTag ()
Mono.Xml2.XmlTextReader.ReadContent ()
Mono.Xml2.XmlTextReader.Read ()
System.Xml.XmlTextReader.Read ()
LectorXML.Start () (at as/sampleXML.cs:17)

其次,我的输出是语言和文件,但没有参数。可能是因为这是不同的节点?我该如何解决这个问题?


Mono是基于.NET 2.0的,对吧?那么你就不应该使用new XmlTextReader(),而应该使用XmlReader.Create()。除非你的文档太大而无法放入内存,否则最好使用XmlDocument - John Saunders
1个回答

7

您的文档根节点只能有一个元素。您有一个<config>和一个<data>。请将它们放在一个单独的文档元素中:

<document>
  <config>
    <language>EN-US</language>
    <file>\File\Doc\sample.txt</file>
  </config>
  <data>
    <arg>LKR</arg>
  </data>
</document>

1
你的 XML 在 <arg> 后面也有 </language>。我也修复了这个问题。 - drdwilcox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接