PC Review
Forums
Newsgroups
Microsoft DotNet
Microsoft VB .NET
Find an xml node
Forums
Newsgroups
Microsoft DotNet
Microsoft VB .NET
Find an xml node
![]() |
Find an xml node |
|
|
Thread Tools | Rate Thread |
|
|
#1 |
|
Guest
Posts: n/a
|
Hello,
I have a xml file like this: <book id='1'> <name></name> <author></author> ... </book> <book id='2'> ... </book> <book id='3'> ... </book> .... How to find the book with attribute id = '2' without cycle all nodes? Thanks! Marco / iw2nzm |
|
|
|
#2 |
|
Guest
Posts: n/a
|
On Sat, 29 Mar 2008 18:00:38 GMT, Marco Trapanese
<marcotrapaneseNOSPAM@gmail.com> wrote: >Hello, > >I have a xml file like this: > ><book id='1'> > <name></name> > <author></author> > ... ></book> > ><book id='2'> > ... ></book> > ><book id='3'> > ... ></book> > >... > > >How to find the book with attribute id = '2' without cycle all nodes? Can't do it, as far I am aware. You will have to restrieve a NodeList on book, then cycle through the nodes looking for the first one that has an attribute of id with the value of 2. Well , technically, you are not cycling thorugh all nodes, since the one you are looking far, at least in this example, is the second one. But you will need to first retrieve the entire list of book nodes with a SelectNodes method invocation. Besides, by this time you have the entire XML file in memory anyway from the DOM Load method. |
|
|
|
#3 |
|
Guest
Posts: n/a
|
On Mar 29, 2:00*pm, Marco Trapanese <marcotrapaneseNOS...@gmail.com>
wrote: > Hello, > > I have a xml file like this: > > <book id='1'> > * * * * <name></name> > * * * * <author></author> > * * * * ... > </book> > > <book id='2'> > * * * * ... > </book> > > <book id='3'> > * * * * ... > </book> > > ... > > How to find the book with attribute id = '2' without cycle all nodes? > > Thanks! > Marco / iw2nzm It would be possible to find the element using a string search, but it would be very difficult to find the matching end element without some serious Regex overhead. Then you would be able to load the string you found into memory as xml and parse it normally. I seriously doubt this would give you better performance, and would be a huge pain to maintenance. Why exactly are you afraid to loop through the nodes? Thanks, Seth Rowe [MVP] |
|
|
|
#4 |
|
Guest
Posts: n/a
|
If this is a proper XML file it will have a root node these <book> nodes
will be children of. In that case you can use XDocument (VB9 (2008)) and XLINQ: Dim myDoc As XDcoument = <books> <book id='1'> <name></name> <author></author> </book> <book id='2'>hello </book> <book id='3'> </book> </books> Dim item = From x In myDoc.<book> Where x.@id = "2" "Marco Trapanese" <marcotrapaneseNOSPAM@gmail.com> wrote in message news:atvHj.277716$%k.397199@twister2.libero.it... > Hello, > > I have a xml file like this: > > <book id='1'> > <name></name> > <author></author> > ... > </book> > > <book id='2'> > ... > </book> > > <book id='3'> > ... > </book> > > ... > > > How to find the book with attribute id = '2' without cycle all nodes? > > Thanks! > Marco / iw2nzm |
|
|
|
#5 |
|
Guest
Posts: n/a
|
What a load of rubbish!!!!!!!!!!!
It's as simple as: _doc.SelectSingleNode("//book[@id='2']") where _doc is the 'loaded' XmlDocument object. "Joe Cool" <joecool@home.net> wrote in message news:l0btu31f88b504dvf5akktrsbmq1b7phta@4ax.com... > On Sat, 29 Mar 2008 18:00:38 GMT, Marco Trapanese > <marcotrapaneseNOSPAM@gmail.com> wrote: > >>Hello, >> >>I have a xml file like this: >> >><book id='1'> >> <name></name> >> <author></author> >> ... >></book> >> >><book id='2'> >> ... >></book> >> >><book id='3'> >> ... >></book> >> >>... >> >> >>How to find the book with attribute id = '2' without cycle all nodes? > > Can't do it, as far I am aware. You will have to restrieve a NodeList > on book, then cycle through the nodes looking for the first one that > has an attribute of id with the value of 2. > > Well , technically, you are not cycling thorugh all nodes, since the > one you are looking far, at least in this example, is the second one. > But you will need to first retrieve the entire list of book nodes with > a SelectNodes method invocation. > > Besides, by this time you have the entire XML file in memory anyway > from the DOM Load method. |
|
|
|
#6 |
|
Guest
Posts: n/a
|
Stephany Young ha scritto:
> What a load of rubbish!!!!!!!!!!! > > It's as simple as: > > _doc.SelectSingleNode("//book[@id='2']") > > where _doc is the 'loaded' XmlDocument object. Yeah, it really works! ![]() Thanks! Marco / iw2nzm |
|
![]() |
|
| Thread Tools | |
| Rate This Thread | |
|
|

Main Page 


