测试了一下,好像没有找到通用的方法,对于不符合规范的,你只能特殊的额外的处理一下
Using reader As System.XML.XmlReader = System.XML.XmlReader.Create("d:\exp.xml")
' Move the reader to the second book node.
reader.MoveToContent()
reader.ReadToDescendant("book")
'reader.Skip() 'Skip the first book.
' Parse the file starting with the second book node.
Dim n As Integer = 0
Do
Select Case reader.NodeType
Case System.XML.XmlNodeType.Element
n=n+1
output.show("<{" & n & "}" & reader.Name)
Dim temp As String = reader.Name
Dim m As Integer = 1
While reader.MoveToNextAttribute()
output.show(" {" & n & "}='{" & m & "}'"& reader.Name & ": " & reader.Value)
m=m+1
End While
output.show(">")
If temp = "data" Then
output.show("</{" & n & "}>" & reader.Name)
n=n-1
End If
Case System.XML.XmlNodeType.Text
output.show(reader.Value)
Case System.XML.XmlNodeType.EndElement
output.show("</{" & n & "}>" & reader.Name)
n=n-1
End Select
Loop While reader.Read()
End Using