Vb.net 使用xmlDocument、xmlNode和xmlNodelist从xml检索数据
这是vb.net中的一个示例代码,我在其中检索没有属性的元素的详细信息Vb.net 使用xmlDocument、xmlNode和xmlNodelist从xml检索数据,vb.net,Vb.net,这是vb.net中的一个示例代码,我在其中检索没有属性的元素的详细信息 For Each standardItemInfoNode In ItemInfoNodes baseDataNodes = ItemInfoNodes.ChildNodes bFirstInRow = True For Each baseDataNode As XmlNode In baseDataNodes If (bFirstInRow) Then
For Each standardItemInfoNode In ItemInfoNodes
baseDataNodes = ItemInfoNodes.ChildNodes
bFirstInRow = True
For Each baseDataNode As XmlNode In baseDataNodes
If (bFirstInRow) Then
bFirstInRow = False
Else
Response.Write("<br>")
End If
Response.Write(baseDataNode.Name & ": " & baseDataNode.InnerText)
Next
Next
ItemInfoNodes中每个standardItemInfoNode的
baseDataNodes=ItemInfoNodes.ChildNodes
bFirstInRow=True
将每个baseDataNode作为baseDataNodes中的XmlNode
如果(bFirstirow)那么
bFirstInRow=False
其他的
响应。写入(“
”)
如果结束
Response.Write(baseDataNode.Name&“:”&baseDataNode.InnerText)
下一个
下一个
如何检索xml的详细信息,比如具有属性的节点及其子节点也具有属性。我需要检索存在于其他XML标签中间的节点及其子节点的所有属性。
我不确定你到底在问什么,我不能给你一个具体的例子,而不知道你要处理的XML格式。但我认为您需要的是XmlNode对象的Attributes属性。每个XmlNode都有一个Attributes属性,允许您访问该节点的所有属性。下面的MSDN页面对此进行了解释(并提供了一个简单的示例):
编辑: 使用您在注释中发布的示例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
Dim attribute As XmlNode = personNode.Attributes.GetNamedItem("PersonId")
If attribute IsNot Nothing Then
Dim personId As String = attribute.InnerText
End If
但是,序列化会更容易,因为反序列化对象对于任何不存在的元素都只具有null属性。您可以使用
选择SingleNode(“XPath或NodeName”)
并在该节点上循环Attributes.Item(index)
。如果您事先知道childnode的名称,还可以循环使用SelectSingleNode(“XPath或NodeName”).SelectSingleNode(“XPath或ChildName”).Attributes.Item(index)
您可以提供一个示例XML文档来说明您所说的内容吗?顺便说一下,如果您只是将XML文档转换为不同格式的输出HTML或XML文档,我强烈建议您使用XSLT脚本和xslcomiledtransform
类来转换文档。标题1文本标题2文本。如果像这样在顶部添加Header1和Header2,代码会是什么。抱歉再次问您。@user1407900您为什么要发布第二个XML文档?看起来我的代码仍然可以处理这个问题。请检查我的第二条注释。@user1407900您需要读取Header1和2的值,还是忽略它们?