Asp.net 解析XML不会通过SelectNodes方法选择任何节点
我正在尝试解析此XML:Asp.net 解析XML不会通过SelectNodes方法选择任何节点,asp.net,xml,vb.net,xml-parsing,Asp.net,Xml,Vb.net,Xml Parsing,我正在尝试解析此XML: <?xml version="1.0" encoding="utf-8" ?> <products xmlns="http://www.fusepumpaffiliates.co.uk/feed-distribution/etsy/us/"> <product> <title>Product 1</title> </product> <product&g
<?xml version="1.0" encoding="utf-8" ?>
<products xmlns="http://www.fusepumpaffiliates.co.uk/feed-distribution/etsy/us/">
<product>
<title>Product 1</title>
</product>
<product>
<title>Product 2</title>
</product>
<product>
<title>Product 3</title>
</product>
</products>
显然,当XML中没有定义名称空间时,我可以为名称空间使用任何名称。但是如果有一个名称空间,比如在我的提要中,我必须使用这个名称空间。
现在它可以工作了。在这些情况下,有一个过程对我来说总是有效的:首先是有一个完美工作的简化版本,然后增加其复杂性/考虑适当的输入。例如:以一个可靠的简单示例代码(MSDN->;我认为您使用的是不同的名称空间;但您明白了这一点);编写一个简单的输入文件(几个节点理想地模拟真实输入的结构)并努力使用它,直到确保它工作正常为止。然后你可以根据需要放大它。谢谢!是定义的名称空间导致了问题。嗯。。。事实上,是你而不是我。让我走上正轨的要点:)
Dim req As HttpWebRequest
Dim Resp As HttpWebResponse
Dim reader As StreamReader
Dim responseString As String = ""
'get the XML
Dim productXML As New XmlDocument
Dim node As XmlNode
Dim root As XmlNode
req = HttpWebRequest.Create(fpm.feedURL)
req.Timeout = 3600000 '3600 seconds
Resp = req.GetResponse()
reader = New StreamReader(Resp.GetResponseStream)
responseString = reader.ReadToEnd()
productXML.LoadXml(responseString)
Dim mgr As XmlNamespaceManager = New XmlNamespaceManager(productXML.NameTable)
mgr.AddNamespace("whatever", productXML.DocumentElement.NamespaceURI)
root = productXML.DocumentElement
nodeList = root.SelectNodes("/products/product")
'nodeList.count = 0 here?!??!
For Each node In nodeList
If node.SelectSingleNode("categories") IsNot Nothing Then
End If
Next node