2013-06-24 151 views
3

我在处理XMl文件时遇到问题。我想循环(使用VB.NET)该文件并提取OrderID元素的所有值。使用VB.NET循环浏览XML文件

<?xml version="1.0"?> 
<ListOrdersResponse xmlns="https://xxx.xxxxxx.com/Orders/999uuu777"> 
    <ListOrdersResult> 
    <NextToken>XXXXXXXXXX</NextToken> 
    <Orders> 
     <Order> 
     <ShipmentServiceLevelCategory>Standard</ShipmentServiceLevelCategory> 
     <OrderId>ooooooooo</OrderId> 
     </Order> 
     <Order> 
     <ShipmentServiceLevelCategory>Standard</ShipmentServiceLevelCategory> 
     <OrderId>ujuujujuj</OrderId> 
     </Order> 
     </Orders> 
    <CreatedBefore>2013-06-19T09:10:47Z</CreatedBefore> 
    </ListOrdersResult> 
    <ResponseMetadata> 
    <RequestId>8e34f7d9-3af7-4490-801b-cccc7777yu</RequestId> 
    </ResponseMetadata> 
</ListOrdersResponse> 

这里是我尝试代码,但它通过任何帮助将衷心感谢每个订单

Dim doc As New XmlDocument() 
doc.Load(file) 
Dim nodelist As XmlNodeList = doc.SelectNodes(".//Orders/Order") 
For Each node As XmlElement In nodelist 
    console.writeline(node.SelectSingleNode("OrderID").InnerText) 
Next 

不循环。

回答

5

试试这个:

doc.Load(file) 
nodelist = doc.GetElementsByTagName("Order") 

For Each node As XmlElement In nodelist 
    Console.Writeline(node("OrderID").InnerText) 
Next 
0

XPath表达式我运行得到两个订单是//tns:Order

Dim doc As New XmlDocument() 
doc.Load(file) 
Dim nodelist As XmlNodeList = doc.SelectNodes("//tns:Order") 
For Each node As XmlElement In nodelist 
    '2 exist 
Next 
+0

感谢您的答复。如果用“// tns:Order”取代“.//Orders/Order”,我会得到一个异常。你能解释一下// tns:路径是什么吗? – user2516387

+0

很抱歉忘了附上例外。它是需要的命名空间管理器或XsltContext。该查询具有前缀,变量或用户定义的函数。 – user2516387

+0

@ user2516387 - 'tns'只是DonA在创建示例程序时使用的xml名称空间别名。你可以删除它。 – JDB