tags:

views:

46

answers:

3

Hello folks,

I would like to know how could I test the fallowing situation:

<foo>
    <bla1>xxx</bla1>
    <bla2>yyy</bla2>
    <bla3>zzz</bla3>
</foo>

In the while(reader.Read()), I drop in the XmlNodeType.Element when I'm in the foo and bla1, bla2, bla3... When drop in the .TextElement in the xxx, yyy, zzz. But can I test if the bla's will have a text value inside or not?

Thanks very much

Pedro Dusso

A: 

If you are using an XmlTextReader you can use the property IsEmptyElement

PierrOz
This dont work in fact... the IsEmptyElement works just for <Element/>, when it became true. Thanks anyway...
Pmdusso
A: 

No, you can't as long as you are using an XmlReader.

The XmlReader class implements a forward-only cursor through an XML hieararchy. As such you can only operate on the XML node found at the current position.

In your case this means that you won't be able to check the contents of the "bla" nodes without first iterating through them.

Enrico Campidoglio
You are right, but I'm using the XmlTextReader in fact, sorry I did not write it before.
Pmdusso
The same principle is true for XmlTextReader. A forward-only cursor will only allow you to inspect the node currently being visited. If you want to query an XML hierarchy you'll have to load it into an in-memory DOM structure, such as the XmlDocument class or the XDocument class.
Enrico Campidoglio
Yeap... I got it. I will have to think about it. We are supposed to process a 700MB XML file, so I wont be able to load it in memory... Thanks anyway man!
Pmdusso
A: 

Anything wrong with reader.HasValue? (or string.IsNullOrEmpty(reader.Value))?

smartcaveman