Asp Forum
Home
|
Login
|
Register
|
Search
Forums
>
microsoft.public.dotnet.framework
Need help with XML.XPath - SelectChildren method
Alexey Titov
8/19/2008 7:25:00 PM
Hi :)
I need help selecting particular nodes with the SelectChildren method
I get a simple xml from the web (excerpt):
<ab:store>
<ab:goods>
<ab:icecream>
<ab:flavor_01>
100
</ab:flavor_01>
<ab:flavor_02>
200
</ab:flavor_02>
<ab:flavor_03>
300
</ab:flavor_03>
</ab:icecream>
<ab:chocolate>
<ab:flavor_01>
100
</ab:flavor_01>
<ab:flavor_02>
200
</ab:flavor_02>
<ab:flavor_03>
300
</ab:flavor_03>
</ab:chocolate>
</ab:goods>
</ab:store>
Using this code:
Dim strNamespaceURI As String = "
http://www.site.com/sch...
Dim objDocument As XPathDocument = New
XPathDocument("
http://www.site.com/docu...
)
Dim objNavigator As XPathNavigator = objDocument.CreateNavigator()
Dim objNamespaceManager As XmlNamespaceManager = New
XmlNamespaceManager(objNavigator.NameTable)
objNamespaceManager.AddNamespace("ab", strNamespaceURI)
Dim objIterator As XPathNodeIterator =
objNavigator.Select("/ab:store/ab:goods", objNamespaceManager)
--- till now everything works fine, objIterator is fine, I can do with it
whatever I want
While objIterator.MoveNext()
--- then I try to get objIterator's children
Dim objIterator_Sub As XPathNodeIterator =
objIterator.Current.SelectChildren("ab:icecream", strNamespaceURI)
--- now objIterator_Sub doesn't return any nodes :( - tho it has 3 children
can any1 help me please - how do I get node's children with <exactly>
SelectChildren(name as string, namespaceuri as string) ...
calling it like SelectChildren(XPathNodeType.All) works fine - but it's no
use to me.
TIA
1 Answer
Pavel Minaev
8/20/2008 7:16:00 AM
0
On Aug 19, 11:24 pm, "Alexey Titov" <hc...@yahoo.com> wrote:
> I need help selecting particular nodes with the SelectChildren method
> I get a simple xml from the web (excerpt):
>
> <ab:store>
> <ab:goods>
>
> <ab:icecream>
> <ab:flavor_01>
> 100
> </ab:flavor_01>
> <ab:flavor_02>
> 200
> </ab:flavor_02>
> <ab:flavor_03>
> 300
> </ab:flavor_03>
> </ab:icecream>
>
> <ab:chocolate>
> <ab:flavor_01>
> 100
> </ab:flavor_01>
> <ab:flavor_02>
> 200
> </ab:flavor_02>
> <ab:flavor_03>
> 300
> </ab:flavor_03>
> </ab:chocolate>
>
> </ab:goods>
> </ab:store>
>
> Using this code:
>
> Dim strNamespaceURI As String = "
http://www.site.com/sch...
>
> Dim objDocument As XPathDocument = New
> XPathDocument("
http://www.site.com/docu...
)
>
> Dim objNavigator As XPathNavigator = objDocument.CreateNavigator()
>
> Dim objNamespaceManager As XmlNamespaceManager = New
> XmlNamespaceManager(objNavigator.NameTable)
>
> objNamespaceManager.AddNamespace("ab", strNamespaceURI)
>
> Dim objIterator As XPathNodeIterator =
> objNavigator.Select("/ab:store/ab:goods", objNamespaceManager)
>
> --- till now everything works fine, objIterator is fine, I can do with it
> whatever I want
>
> While objIterator.MoveNext()
>
> --- then I try to get objIterator's children
>
> Dim objIterator_Sub As XPathNodeIterator =
> objIterator.Current.SelectChildren("ab:icecream", strNamespaceURI)
Here's your problem. The first argument of SelectChildren is not an
XPath expression - _local_ name of the child elements to retrieve. You
do not need the namespace prefix here (and you specify the namespace
anyway in the second argument). SelectChildren("icecream",
strNamespaceURI) should do fine. Or, you can use Select() instead of
SelectChildren: Select("ab:icecream", objNamespaceManager) - and here
"ab:icecream" is an XPath expression.
Servizio di avviso nuovi messaggi
Ricevi direttamente nella tua mail i nuovi messaggi per
Need help with XML.XPath - SelectChildren method
Inserendo la tua e-mail nella casella sotto, riceverai un avviso tramite posta elettronica ogni volta che il motore di ricerca troverà un nuovo messaggio per te
Il servizio è completamente GRATUITO!
x
Login to ForumsZone
Login with Google
Login with E-Mail & Password