2010-10-03 11 views
5

Vorrei sapere come ho potuto testare la situazione maggese:Come verificare se un elemento XML ha un elemento di testo all'interno?

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

Nel mentre (reader.Read()), mi calo nel XmlNodeType.Element quando sono nella foo e BLA1, bla2, bla3 ... Quando si rilascia il .TextElement in xxx, yyy, zzz. Ma posso provare se il bla avrà un valore di testo dentro o no?

Grazie molto

Pedro Dusso

risposta

2

No, non più a lungo possibile, come si utilizza un XmlReader.

La classe XmlReader implementa un cursore di inoltro solo attraverso una gerarchia XML. Pertanto, è possibile operare solo sul nodo XML trovato nella posizione corrente.

Nel tuo caso, ciò significa che non sarai in grado di controllare il contenuto dei nodi "bla" senza prima averli iterati.

+0

Hai ragione, ma sto usando XmlTextReader infatti, scusa non l'ho scritto prima. –

+0

Lo stesso principio vale per XmlTextReader. Un cursore forward-only ti consentirà solo di ispezionare il nodo attualmente visitato. Se si desidera eseguire una query su una gerarchia XML, è necessario caricarla in una struttura DOM in memoria, ad esempio la classe XmlDocument o la classe XDocument. –

+0

Yeap ... ho capito. Dovrò pensarci. Dovremmo elaborare un file XML da 700MB, quindi non sarò in grado di caricarlo in memoria ... Grazie comunque amico! –

0

Se si utilizza un XmlTextReader è possibile utilizzare la proprietà IsEmptyElement

+0

Questo non funziona in effetti ... l'IsEmptyElement funziona solo per , quando è diventato vero. Grazie comunque ... –

0

Qualcosa non va con il lettore.HasValue? (o string.IsNullOrEmpty (reader.Value))?

Problemi correlati