2012-08-09 15 views
5

Czy istnieje sposób sprawdzenia, czy węzeł, którego szukam, przy użyciu XPATH zawiera podwęzły, czy nie?Sprawdź, czy węzeł XML zawiera podrzędnego podrzędnego

Mam plik xml, że określony węzeł czasami ma dzieci, a czasem nie! Jak to sprawdzić, więc nie dostaję za dużo NullReferenceExceptions!?

zobacz poniższy przykład:

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

Jeśli bieżący plik xml pracuję z ma węzeł Test wewnątrz Tests jego pracy ok, ale w innym pliku XML węzeł Tests nie zawiera niczego, a to jest po prostu bez wyraźnego powodu !?

Czy jest w tym celu polecenie XPATH? coś jak!! :

"/Document/Tests[NodeExist(Test)]

Odpowiedz

4

/Document/Tests[Test] dadzą ci Tests węzły, które jako węzeł podrzędny mają tylko węzeł Test.

Można również uruchomić wybór przed /Document/Tests, a następnie wywołać element.GetElementsByTagName("Test").Count > 0, aby upewnić się, że istnieje co najmniej jeden węzeł Test. W ten sposób można programowo pokazać pusty ciąg lub komunikat o błędzie bez wyjątku.

0

Prawdziwy szybkie Google dało to:

/Document/Tests/not(*) 
1

Tak można użyć następującego XPath "/ Dokument/Testy [node()]" ten daje wszystko Testuje węzły, które mają węzeł podrzędny. Możesz dalej ulepszać, aby podać nazwę węzła, a także nodetype.

Jeśli chcesz konkretne węzły, które mają węzeł podrzędny o nazwie test użyć tej „/ Dokument/Testy [TEST]”

Więcej przykładów można znaleźć w MSDN http://msdn.microsoft.com/en-us/library/ms256086.aspx

Powiązane problemy