有多个根元素加载xml

时间:2012-07-25 07:19:11

标签: c# xml vb.net

sRecieved = "<XmlClient>2.0</XmlClient><XmlVersion>3.0</XmlVersion>" 
Dim xml As New XmlDocument();    
xml.LoadXml(sRecieved);

有多个根元素.....我想要xmlclient值和xmlversion值

2 个答案:

答案 0 :(得分:3)

是的,您的数据不是有效的XML文档。 (错误信息非常清楚 - 您已经拥有多个顶级元素。)您可以通过添加虚拟根元素使其成为有效文档:

xml.LoadXml("<root>" & sReceived & "</root>")

...但如果您有机会更改发送数据的任何内容,那么发送实际的XML文档会更好。

编辑:如果您能够使用LINQ to XML而不是XmlDocument,那么获取客户端编号和版本号很容易。例如,作为文字:

Dim clientVersion = doc.Root.Element("XmlClient").Value
Dim xmlVersion = doc.Root.Element("XmlVersion").Value 

编辑:好的,如果您遇到XmlDocument,我相信您可以使用:

Dim clientVersionNode = doc.DocumentElement.GetElementsByTagName("XmlClient")(0)
Dim clientVersion = (CType(clientVersionNode, XmlElement)).InnerText

(同样适用于xmlVersion

答案 1 :(得分:-1)

发生此错误是因为xml字符串中没有根元素。

试试这个

sRecieved = "<xmlroot><XmlClient>2.0</XmlClient><XmlVersion>3.0</XmlVersion></xmlroot>"

Dim xml As New XmlDocument()

xml.LoadXml(sRecieved)