XML错误:存在多个根元素

我从Web服务获取XML。XML如下所示:

<parent>

<child>

Text

</child>

</parent>

<parent>

<child>

<grandchild>

Text

</grandchild>

<grandchild>

Text

</grandchild>

</child>

<child>

Text

</child>

</parent>

etc.

这是我的C#代码:

StringBuilder output = new StringBuilder();

// Create an XmlReader

using (XmlReader reader = XmlReader.Create(new StringReader(xoResponse.@return)))

{

XmlWriterSettings ws = new XmlWriterSettings();

//ws.Indent = true;

using (XmlWriter writer = XmlWriter.Create(output, ws))

{

// Parse the file and display each of the nodes.

while (reader.Read())

{

switch (reader.NodeType)

{

case XmlNodeType.Element:

writer.WriteStartElement(reader.Name);

break;

case XmlNodeType.Text:

writer.WriteString(reader.Value);

break;

case XmlNodeType.XmlDeclaration:

case XmlNodeType.ProcessingInstruction:

writer.WriteProcessingInstruction(reader.Name, reader.Value);

break;

case XmlNodeType.Comment:

writer.WriteComment(reader.Value);

break;

case XmlNodeType.EndElement:

writer.WriteFullEndElement();

break;

}

}

}

}

我相信该错误将引发第二个父元素。如何避免此错误?任何帮助是极大的赞赏。

回答:

您需要将<parent>元素包含在周围的元素中,因为XML文档只能有一个根节点:

<parents> <!-- I've added this tag -->

<parent>

<child>

Text

</child>

</parent>

<parent>

<child>

<grandchild>

Text

</grandchild>

<grandchild>

Text

</grandchild>

</child>

<child>

Text

</child>

</parent>

</parents> <!-- I've added this tag -->

当您从其他地方接收到该标记时,而不是自己生成标记,您可能必须自己尝试通过将响应视为字符串并用适当的标签包装它,然后再尝试将其解析为XML。

因此,您有两种选择:

  1. 获取Web服务的提供者以返回具有一个根节点的 实际 XML
  2. 如上文所述,对XML进行预处理,以添加根节点
  3. 对XML进行预处理,以将其拆分为多个块(即,每个<parent>节点一个),并将每个块作为不同的XML文档进行处理

以上是 XML错误:存在多个根元素 的全部内容, 来源链接: utcz.com/qa/433345.html

回到顶部