【发布时间】:2015-04-16 16:31:16
【问题描述】:
我正在调用一个返回 xml 的 Web 服务。当我需要在 json 中包含该 xml 以供以后使用时。我可以使用 Web 服务的其他方法来做到这一点。但是当调用 web 服务的特定方法并尝试解析它时,我得到以下错误:
“有多个根元素。第 9 行,位置 2”。
我收到的 xml 肯定有多个根元素,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<Server>
<Name>Abc</Name>
<URL>www.abc.com</URL>
<Env>Windows</Env>
</Server>
<Server>
<Name>XYZ</Name>
<URL>www.xyz.com</URL>
<Env>Linux-Ubuntu</Env>
</Server>
所以基本上当我这样做时:
XmlDocument doc = new XmlDocument();
doc.LoadXml(response); // response contains the xml shown above
if (doc.FirstChild.NodeType == XmlNodeType.XmlDeclaration)
doc.RemoveChild(doc.FirstChild); // Because I want to get rid of the declaration element in the xml.
var resXML = JsonConvert.SerializeXmlNode(doc, Newtonsoft.Json.Formatting.Indented, true); // To convert xml into json
return resXML; // Finally return the json.
调试的时候是 doc.LoadXml(response);在哪里抛出异常。
请记住,这是我从 web 服务而不是文件中获取的 xml。所以在这里使用 XDocument 是行不通的。
有什么建议、想法吗?
【问题讨论】:
-
如果它有多个根级元素,那么它就不是 XML 文档。您需要与供应商交谈并要求他们最终解决问题。
-
是的,我已经和他们谈过了,他们告诉我至少需要两周时间才能修复它。所以我不得不想出一个解决方法。