我不确定你到底在问什么,如果不知道你要处理的 XML 的格式,我不能给你一个具体的例子,但我认为你正在寻找的是 XmlNode 的 Attributes 属性对象。每个 XmlNode 都有一个 Attributes 属性,允许您访问该节点的所有属性。这是解释它的 MSDN 页面(并提供了一个简单的示例):
http://msdn.microsoft.com/en-us/library/7f285y48.aspx
编辑:
使用您在评论中发布的示例 XML,您可以读取所有值和属性,如下所示:
Dim doc As XmlDocument = New XmlDocument()
doc.LoadXml("<EventTracker><StandardItem><Header1>Header1 Text</Header1> <Header2>Header2 Text</Header2></StandardItem><Item> <Events> <EventSub EventId='73' EventName='Orchestra' Description='0'> <Person PersonId='189323156' PersonName='Chandra' Address='Arunachal'/><Person PersonId='189323172' PersonName='Sekhar' Address='Himachal'/></EventSub> </Events> </Item> </EventTracker>")
Dim header1 As String = doc.SelectSingleNode("EventTracker/StandardItem/Header1").InnerText
Dim header2 As String = doc.SelectSingleNode("EventTracker/StandardItem/Header2").InnerText
For Each eventSubNode As XmlNode In doc.SelectNodes("EventTracker/Item/Events/EventSub")
Dim eventId As String = eventSubNode.Attributes("EventId").InnerText
Dim eventName As String = eventSubNode.Attributes("EventName").InnerText
Dim eventDescription As String = eventSubNode.Attributes("Description").InnerText
For Each personNode As XmlNode In eventSubNode.SelectNodes("Person")
Dim personId As String = personNode.Attributes("PersonId").InnerText
Dim personName As String = personNode.Attributes("PersonName").InnerText
Dim personAddress As String = personNode.Attributes("Address").InnerText
Next
Next
但是,如果您要像这样加载 XML 中的所有数据,我建议将 XML 反序列化为 EventTracker 对象。或者,正如我在对您的帖子的评论中所说,如果读取 XML 文档的唯一目的是将其转换为另一个 XML 或 HTML 文档,我会建议使用 XSLT。
如果要测试属性是否存在,可以执行以下操作:
Dim attribute As XmlNode = personNode.Attributes.GetNamedItem("PersonId")
If attribute IsNot Nothing Then
Dim personId As String = attribute.InnerText
End If
但是,使用序列化会更容易,因为反序列化的对象对于任何不存在的元素只会具有 null 属性。