我正在尝试解析这个XML以获取小狗和小猫的价值。
<Pets>
<Puppies>4</Puppies>
<Kittens>2</Kittens>
</Pets>
这是我的代码
baseReader = New IO.StringReader(testXml)
xmlReader = New System.Xml.XmlTextReader(baseReader)
While xmlReader.Read()
Select Case xmlReader.Name
Case "Puppies"
puppyCount = CLng(xmlReader.ReadInnerXml)
Case "Kittens"
kittenCount = CLng(xmlReader.ReadInnerXml)
Case Else
End Select
End While
在第一次阅读时,元素名称为“Pets”,Case Else会被点击。在下一次阅读时,元素名称为“Puppies”,puppyCount正确设置为4。
但是它似乎跳过“小猫”并直接转向内部XML。我该怎么办?
编辑:XmlReader比其他.NET解析器更快,但我的文件足够小,可能不是一个好处。 Joe Ferner's tests.编辑2:原始代码中存在读者定位问题。
答案 0 :(得分:1)
除非性能非常重要,否则我建议使用LINQ to XML:
Dim elem = XElement.Parse(testXml)
Dim puppyCount = CType(elem.Element("Puppies").Value, integer)
Dim kittenCount = CType(elem.Element("Kittens").Value, integer)
答案 1 :(得分:0)
我对XMLTextReade
r和XMLReader
都遇到了同样的问题。最初的问题是.ReadInnerXML()
有时可以执行行尾读取,然后在循环的顶部进行另一次读取,这当然意味着您已跳过下一个元素。您可以尝试使用.ReadString
- 这对我有用。