-
Nov 13th, 2011, 02:52 PM
#1
Thread Starter
Junior Member
Xpath query on an XML returns 0 results
Hi guys !
A little something i hope you could help me with -
I've converted an html to XML and now i want to get all the child nodes nested
within a DIV element with a specific attribute (class="itemInfo").
Because the html that the XML is based on changes from time to time i want to use a more "safe" relative root,
(something like : "//div[@class='itemInfo']").
Problem is that i always get 0 nodes ...
I'm sure that something is wrong with my Xpath syntax, just don't know what it is.
Here is my code, please, any help would be appreciated.
Code:
Dim doc As New System.Xml.XmlDocument()
doc.Load("products.xml")
Dim root As System.Xml.XmlElement = doc.DocumentElement
Dim nodes As System.Xml.XmlNodeList = root.SelectNodes("//descendant::div[@class='itemInfo']")
Console.WriteLine(nodes.Count) '<-- always get 0
For Each node As System.Xml.XmlNode In nodes
Dim name As String = node("name").InnerText
Dim title As String = node("title").InnerText
Console.Write("name" & vbTab & "{0}" & vbTab & "title" & vbTab & "{1}", name, title)
Next
I also tried
Code:
root.SelectNodes("//div[@class='itemInfo']")
and
Code:
root.SelectNodes("/*//div[@class='itemInfo']")
but nothing seems to work.
Thanks in advance !
-
Nov 13th, 2011, 04:23 PM
#2
Thread Starter
Junior Member
Re: Xpath query on an XML returns 0 results
The problem seems to be with the <html> tag attribute :
<html xmlns="http://www.w3.org/1999/xhtml">
As soon as i removed the xmlns attribute my "selectNodes" method started working ...
So now -
Is there a way to still make it working without removing that xmlns attribute ?
Thanks !
-
Nov 13th, 2011, 04:31 PM
#3
Re: Xpath query on an XML returns 0 results
does it have to be xPath?
html is an XML Namespace. search for that + you should find an answer
- Coding Examples:
- Features:
- Online Games:
- Compiled Games:
-
Nov 13th, 2011, 04:44 PM
#4
Thread Starter
Junior Member
Re: Xpath query on an XML returns 0 results
So i've searched the net and found something that looks like a solution,
i've changed my code to :
Code:
Dim doc As New System.Xml.XmlDocument()
doc.Load("products.xml")
Dim root As System.Xml.XmlElement = doc.DocumentElement
Dim nsMgr As XmlNamespaceManager = New XmlNamespaceManager(root.OwnerDocument.NameTable)
nsMgr.AddNamespace("http://www.w3.org/1999/xhtml", "ns")
nodeList = root.SelectNodes("descendant::ns:div[@class='itemInfo']", nsMgr)
Console.WriteLine(nodes.Count)
For Each node As System.Xml.XmlNode In nodes
Dim name As String = node("name").InnerText
Dim title As String = node("title").InnerText
Console.Write("name" & vbTab & "{0}" & vbTab & "title" & vbTab & "{1}", name, title)
Next
But now i'm getting an error :"Namespace prefix 'ns' is not defined."
Originally Posted by .paul.
does it have to be xPath?
html is an XML Namespace. search for that + you should find an answer
-
Nov 13th, 2011, 04:48 PM
#5
Re: Xpath query on an XML returns 0 results
if you upload your xml (or an example xml with the same layout) i'll debug it for you
- Coding Examples:
- Features:
- Online Games:
- Compiled Games:
-
Nov 13th, 2011, 04:53 PM
#6
Re: Xpath query on an XML returns 0 results
i looked up XmlNamespaceManager + it seems you're using it wrong:
(from: http://msdn.microsoft.com/en-us/library/d6730bwt(v=vs.80).aspx )
vb Code:
nsmgr.AddNamespace("xsd", "http://www.w3.org/2001/XMLSchema")
- Coding Examples:
- Features:
- Online Games:
- Compiled Games:
-
Nov 14th, 2011, 01:12 AM
#7
Thread Starter
Junior Member
Re: Xpath query on an XML returns 0 results
Works like a charm :-)
Thanks mate !
Originally Posted by .paul.
Tags for this Thread
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|