如何遍历 xml 个同名元素
how to step through xml elements with the same name
好的,这是我的第二个 post,但我仍然对 vb.net 中的 XML 感到厌烦。
我知道如何为具有唯一名称的单个元素获取我需要的数据,但如果重复该过程怎么办?
我的示例中,我正在使用 API 与工作中的程序进行交互。当我使用 API 到 运行 搜索与商店相关的门票时 # 它 returns 多个值,如下所示:
<requests>
<request>
<form name="requestID">999999</form>
<form name="userTimeFormat">EEE, MMM d HH:mm:ss z yyyy</form>
<form name="contact">Contact Name</form>
<form name="status">Status</form>
<form name="statusID"></form>
<form name="priority"></form>
<form name="supportRep">Tom Smith</form>
<form name="supportRepCostPerHour">0.00</form>
<form name="createdTime">Time/Date</form>
<form name="updatedTime">Time/Date</form>
<form name="dueByTime">Time/Date</form>
<form name="isOverDue">T/F</form>
<form name="accountID"/>
<form name="account"/>
<form name="subject">Subject Goes Here</form>
</request>
<request>
<form name="requestID">999998</form>
<form name="userTimeFormat">EEE, MMM d HH:mm:ss z yyyy</form>
<form name="contact">Contact Name</form>
<form name="status">Status</form>
<form name="statusID"></form>
<form name="priority"></form>
<form name="supportRep">Tom Smith</form>
<form name="supportRepCostPerHour">0.00</form>
<form name="createdTime">Time/Date</form>
<form name="updatedTime">Time/Date</form>
<form name="dueByTime">Time/Date</form>
<form name="isOverDue">T/F</form>
<form name="accountID"/>
<form name="account"/>
<form name="subject"> Subject Goes Here </form>
</request>
因此,当我使用 XPath 获取信息时,它对第一个 非常有效,但我的问题是如何转到下一个 以获取下一组数据?
这是我获取它的代码:
For Each requests As XElement In reader...<request>
Dim ReqID As String = reader.XPathSelectElement("//form[@name='requestID']")
Dim contact As String = reader.XPathSelectElement("//form[@name='contact']")
我知道我需要某种循环来重复这个过程,但现在我不知所措。任何和所有 help/comments 都表示赞赏。我是编码新手 vb,但我是一个快速而渴望的学习者。谢谢
您已经 select <request>
个元素;但您必须对每个元素使用 XPath 表达式,而不是根元素:
For Each r in xml.XPathSelectElements("//request")
Dim ReqID As String = r.XPathSelectElement(".//form[@name='requestID']")
Dim contact As String = r.XPathSelectElement(".//form[@name='contact']")
' ...do something... '
Next
或者,没有 XPath:
For Each request in xml...<request>
Dim ReqID = request.<form>.Single(Function(f) f.@name = "requestID").Value
Dim contact = request.<form>.Single(Function(f) f.@name = "contact").Value
' ...do something... '
Next
好的,这是我的第二个 post,但我仍然对 vb.net 中的 XML 感到厌烦。
我知道如何为具有唯一名称的单个元素获取我需要的数据,但如果重复该过程怎么办?
我的示例中,我正在使用 API 与工作中的程序进行交互。当我使用 API 到 运行 搜索与商店相关的门票时 # 它 returns 多个值,如下所示:
<requests>
<request>
<form name="requestID">999999</form>
<form name="userTimeFormat">EEE, MMM d HH:mm:ss z yyyy</form>
<form name="contact">Contact Name</form>
<form name="status">Status</form>
<form name="statusID"></form>
<form name="priority"></form>
<form name="supportRep">Tom Smith</form>
<form name="supportRepCostPerHour">0.00</form>
<form name="createdTime">Time/Date</form>
<form name="updatedTime">Time/Date</form>
<form name="dueByTime">Time/Date</form>
<form name="isOverDue">T/F</form>
<form name="accountID"/>
<form name="account"/>
<form name="subject">Subject Goes Here</form>
</request>
<request>
<form name="requestID">999998</form>
<form name="userTimeFormat">EEE, MMM d HH:mm:ss z yyyy</form>
<form name="contact">Contact Name</form>
<form name="status">Status</form>
<form name="statusID"></form>
<form name="priority"></form>
<form name="supportRep">Tom Smith</form>
<form name="supportRepCostPerHour">0.00</form>
<form name="createdTime">Time/Date</form>
<form name="updatedTime">Time/Date</form>
<form name="dueByTime">Time/Date</form>
<form name="isOverDue">T/F</form>
<form name="accountID"/>
<form name="account"/>
<form name="subject"> Subject Goes Here </form>
</request>
因此,当我使用 XPath 获取信息时,它对第一个
这是我获取它的代码:
For Each requests As XElement In reader...<request>
Dim ReqID As String = reader.XPathSelectElement("//form[@name='requestID']")
Dim contact As String = reader.XPathSelectElement("//form[@name='contact']")
我知道我需要某种循环来重复这个过程,但现在我不知所措。任何和所有 help/comments 都表示赞赏。我是编码新手 vb,但我是一个快速而渴望的学习者。谢谢
您已经 select <request>
个元素;但您必须对每个元素使用 XPath 表达式,而不是根元素:
For Each r in xml.XPathSelectElements("//request")
Dim ReqID As String = r.XPathSelectElement(".//form[@name='requestID']")
Dim contact As String = r.XPathSelectElement(".//form[@name='contact']")
' ...do something... '
Next
或者,没有 XPath:
For Each request in xml...<request>
Dim ReqID = request.<form>.Single(Function(f) f.@name = "requestID").Value
Dim contact = request.<form>.Single(Function(f) f.@name = "contact").Value
' ...do something... '
Next