2012-08-09 10 views
5

C'è un modo per verificare se il nodo che sto cercando, usando XPATH contiene dei sottonodi oppure no?Controlla se un nodo xml contiene sub figlio

Ho un file xml che a volte un nodo specifico ha childs e qualche volta no! Come verificare questo, quindi non ho troppe NullReferenceExceptions!?

Controllare l'esempio seguente:

var text = xml.SelectSingleNode("/Document/Tests/Test").InnerText; 

Se il file XML corrente sto lavorando con non hanno il nodo Test all'interno Tests suo lavoro ok, ma in un altro file XML nodo Tests non contiene nulla e è solo lì senza una ragione apparente !?

Esiste un comando in XPATH per eseguire questa operazione? qualcosa di simile a!! :

"/Document/Tests[NodeExist(Test)]

risposta

4

/Document/Tests[Test] vi darà Tests nodi che hanno solo un nodo Test come figlio.

È anche possibile eseguire una selezione su /Document/Tests e successivamente chiamare element.GetElementsByTagName("Test").Count > 0 per assicurarsi che vi sia almeno un nodo Test. In questo modo è possibile mostrare a livello di programmazione una stringa vuota o un messaggio di errore senza eccezioni.

0

Un rapido reale Google ha dato questo:

/Document/Tests/not(*) 
1

Sì, è possibile utilizzare il seguente XPath "/ Documento/Test [node()]" Questo vi darà tutte le Verifica i nodi che hanno un nodo figlio. È possibile migliorare ulteriormente per dare il nome del nodo lì così come nodetype.

Se volete nodi specifici che hanno un nodo figlio denominato Test utilizzare questa "/ documento/Test [Test]"

Altri esempi si possono trovare in MSDN http://msdn.microsoft.com/en-us/library/ms256086.aspx

Problemi correlati