XpathNavigator.SelectChildren problem

G

Gigs_

hi

i have xml in this structue

<?xml version="1.0" encoding="utf-8" ?>
<obrazac sifra="N-08-V">
<!--
Stanje: u obradi
Primjedbe: nema
-->
<odjeljak>
<naslov>OBAVIJEST O OBJAVI NA PROFILU NARUÈITELJA (KUPCA)</naslov>
</odjeljak>
<odjeljak sifra="P.1">
<izmjena id="1">Objava se odnosi na objavljivanje</izmjena>
<izmjena id="1-1">Prethodne (informacijske) obavijesti</izmjena>
<izmjena id="1-2">Prethodne (indikativne) obavijesti - koja ne
slu¾i kao poziv na nadmetanje</izmjena>
</odjeljak>
....
</obrazac>


when i use XpathNavigator.SelectChildren("@"//odjeljak[@sifra='P.1']",
"") i get 0 nodes. what i need to put as second parameter
(namespaceURI)? i dont have any namespace defined.
 
M

Martin Honnen

Gigs_ said:
hi

i have xml in this structue

<?xml version="1.0" encoding="utf-8" ?>
<obrazac sifra="N-08-V">
<!--
Stanje: u obradi
Primjedbe: nema
-->
<odjeljak>
<naslov>OBAVIJEST O OBJAVI NA PROFILU NARUÈITELJA (KUPCA)</naslov>
</odjeljak>
<odjeljak sifra="P.1">
<izmjena id="1">Objava se odnosi na objavljivanje</izmjena>
<izmjena id="1-1">Prethodne (informacijske) obavijesti</izmjena>
<izmjena id="1-2">Prethodne (indikativne) obavijesti - koja ne
slu¾i kao poziv na nadmetanje</izmjena>
</odjeljak>
....
</obrazac>


when i use XpathNavigator.SelectChildren("@"//odjeljak[@sifra='P.1']",
"") i get 0 nodes. what i need to put as second parameter
(namespaceURI)? i dont have any namespace defined.

If you want to pass in an XPath expression (e.g.
//odjeljak[@sifra='P.1']) then use the Select method, not the
SelectChildren method:

XPathDocument doc = new XPathDocument(@"..\..\XMLFile1.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator it = nav.Select(@"//odjeljak[@sifra='P.1']");
Console.WriteLine(it.Count);

That yields 1 for your posted XML sample.

The SelectChildren method takes an element name (e.g. odjeljak) but not
an XPath expression.
 
G

Gigs_

Gigs_ said:
i have xml in this structue
<?xml version="1.0" encoding="utf-8" ?>
<obrazac sifra="N-08-V">
<!--
Stanje: u obradi
Primjedbe: nema
-->
<odjeljak>
<naslov>OBAVIJEST O OBJAVI NA PROFILU NARUÈITELJA (KUPCA)</naslov>
</odjeljak>
<odjeljak sifra="P.1">
<izmjena id="1">Objava se odnosi na objavljivanje</izmjena>
<izmjena id="1-1">Prethodne (informacijske) obavijesti</izmjena>
<izmjena id="1-2">Prethodne (indikativne) obavijesti - koja ne
slu¾i kao poziv na nadmetanje</izmjena>
</odjeljak>
....
</obrazac>
when i use XpathNavigator.SelectChildren("@"//odjeljak[@sifra='P.1']",
"") i get 0 nodes. what i need to put as second parameter
(namespaceURI)? i dont have any namespace defined.

If you want to pass in an XPath expression (e.g.
//odjeljak[@sifra='P.1']) then use the Select method, not the
SelectChildren method:

XPathDocument doc = new XPathDocument(@"..\..\XMLFile1.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator it = nav.Select(@"//odjeljak[@sifra='P.1']");
Console.WriteLine(it.Count);

That yields 1 for your posted XML sample.

The SelectChildren method takes an element name (e.g. odjeljak) but not
an XPath expression.

ok, but i just want to get list of specific odjeljak children and
after some processing i want to go recursive to that children children
if thez have it. for that i need XpathNavigator.SelectChildren,
because i cannot know what children will be in specific node. how can
i get specific odjeljka children
 
G

Gigs_

Gigs_ said:
i have xml in this structue
<?xml version="1.0" encoding="utf-8" ?>
<obrazac sifra="N-08-V">
<!--
Stanje: u obradi
Primjedbe: nema
-->
<odjeljak>
<naslov>OBAVIJEST O OBJAVI NA PROFILU NARUÈITELJA (KUPCA)</naslov>
</odjeljak>
<odjeljak sifra="P.1">
<izmjena id="1">Objava se odnosi na objavljivanje</izmjena>
<izmjena id="1-1">Prethodne (informacijske) obavijesti</izmjena>
<izmjena id="1-2">Prethodne (indikativne) obavijesti - koja ne
slu¾i kao poziv na nadmetanje</izmjena>
</odjeljak>
....
</obrazac>
when i use XpathNavigator.SelectChildren("@"//odjeljak[@sifra='P.1']",
"") i get 0 nodes. what i need to put as second parameter
(namespaceURI)? i dont have any namespace defined.

If you want to pass in an XPath expression (e.g.
//odjeljak[@sifra='P.1']) then use the Select method, not the
SelectChildren method:

XPathDocument doc = new XPathDocument(@"..\..\XMLFile1.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator it = nav.Select(@"//odjeljak[@sifra='P.1']");
Console.WriteLine(it.Count);

That yields 1 for your posted XML sample.

The SelectChildren method takes an element name (e.g. odjeljak) but not
an XPath expression.

thanks, but i need to get list of childrens and than do some
processing on them and if they have children i will go deeper with
recursion and again do some stuff if thez have children. but i dont
know what children they have, so i need to use SelectChildren. how can
i get children from specific odjeljak?
 
G

gigs

Gigs_ said:
Gigs_ said:
hi
i have xml in this structue
<?xml version="1.0" encoding="utf-8" ?>
<obrazac sifra="N-08-V">
<!--
Stanje: u obradi
Primjedbe: nema
-->
<odjeljak>
<naslov>OBAVIJEST O OBJAVI NA PROFILU NARUÈITELJA (KUPCA)</naslov>
</odjeljak>
<odjeljak sifra="P.1">
<izmjena id="1">Objava se odnosi na objavljivanje</izmjena>
<izmjena id="1-1">Prethodne (informacijske) obavijesti</izmjena>
<izmjena id="1-2">Prethodne (indikativne) obavijesti - koja ne
slu¾i kao poziv na nadmetanje</izmjena>
</odjeljak>
....
</obrazac>
when i use XpathNavigator.SelectChildren("@"//odjeljak[@sifra='P.1']",
"") i get 0 nodes. what i need to put as second parameter
(namespaceURI)? i dont have any namespace defined.
If you want to pass in an XPath expression (e.g.
//odjeljak[@sifra='P.1']) then use the Select method, not the
SelectChildren method:

XPathDocument doc = new XPathDocument(@"..\..\XMLFile1.xml");
XPathNavigator nav = doc.CreateNavigator();
XPathNodeIterator it = nav.Select(@"//odjeljak[@sifra='P.1']");
Console.WriteLine(it.Count);

That yields 1 for your posted XML sample.

The SelectChildren method takes an element name (e.g. odjeljak) but not
an XPath expression.

thanks, but i need to get list of childrens and than do some
processing on them and if they have children i will go deeper with
recursion and again do some stuff if thez have children. but i dont
know what children they have, so i need to use SelectChildren. how can
i get children from specific odjeljak?
sorry for two post, mz mistake. just forget second
 
M

Martin Honnen

Gigs_ said:
ok, but i just want to get list of specific odjeljak children and
after some processing i want to go recursive to that children children
if thez have it. for that i need XpathNavigator.SelectChildren,
because i cannot know what children will be in specific node. how can
i get specific odjeljka children

SelectChildren takes the element name thus if you know you want the
child elements named 'odjeljka' then use that name with SelectChildren:
nav.SelectChildren("odjeljka", "")

Or you use Select and pass in an XPath expression selecting specific
children:
nav.Select("odjeljka[@sifra='P.1']")
 
Top