Ureader.com  
Microsoft software help and Community
   home   |   control panel login   |   archive   |  
 
DotNet
acad.assignment.mngr
academic
adonet
aspnet
aspnet.announcements
aspnet.build.controls
aspnet.caching
aspnet.datagridcontrol
aspnet.mobile
aspnet.security
aspnet.webcontrols
aspnet.webservices
clr
compactframework
component_services
datatools
distributed_apps
drawing
faqs
framework
framework.wmi
general
internationalization
interop
languages.csharp
languages.jscript
languages.vb
languages.vb.controls
languages.vb.data
languages.vb.upgrade
languages.vc
languages.vc.libraries
myservices
odbcnet
performance
remoting
scripting
sdk
security
setup
vjsharp
vsa
webservi.enhancements
webservices
windowsforms
windowsforms.controls
winforms.databinding
winforms.designtime
xml
  
 
date: Tue, 19 Aug 2008 22:24:56 +0300,    group: microsoft.public.dotnet.framework        back       


Need help with XML.XPath - SelectChildren method   
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/schema/"

Dim objDocument As XPathDocument = New 
XPathDocument("http://www.site.com/document")

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
date: Tue, 19 Aug 2008 22:24:56 +0300   author:   Alexey Titov

Re: Need help with XML.XPath - SelectChildren method   
On Aug 19, 11:24 pm, "Alexey Titov"  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/schema/"
>
> Dim objDocument As XPathDocument = New
> XPathDocument("http://www.site.com/document")
>
> 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.
date: Wed, 20 Aug 2008 00:16:05 -0700 (PDT)   author:   Pavel Minaev

Google
 
Web ureader.com


    COPYRIGHT 2007, YARDI TECHNOLOGY LIMITED, ALL RIGHT RESERVE  |   contact us