2012-08-09 14 views
5

¿Hay alguna manera de verificar si el nodo que estoy buscando, usando XPATH contiene subnodos o no?Compruebe si un nodo xml contiene sub secundario

Tengo un archivo xml que un nodo específico a veces tiene hijos y ¡a veces no funciona! ¿Cómo verifico esto así que no recibo demasiadas NullReferenceExceptions?

Comprobar el siguiente ejemplo:

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

Si el archivo XML actual que estoy trabajando con tiene el nodo Test dentro Tests su trabajo bien, pero en otro archivo XML del nodo Tests no contiene nada y ¿está ahí sin razón aparente?

¿Hay algún comando en XPATH para hacer esto? ¡¡algo como!! :

"/Document/Tests[NodeExist(Test)]

Respuesta

4

/Document/Tests[Test] te dará Tests nodos que solo tienen un nodo Test como elemento secundario.

También puede ejecutar una selección en contra de /Document/Tests y luego llamar al element.GetElementsByTagName("Test").Count > 0 para asegurarse de que haya al menos un nodo Test. De esta forma, puede mostrar mediante programación una cadena vacía o un mensaje de error sin excepción.

0

Una búsqueda rápida en Google verdadero dio esto:

/Document/Tests/not(*) 
1

sí se puede utilizar el siguiente XPath "/ Documento/Pruebas [node()]" Esto le dará toda la Prueba los nodos que tienen un nodo secundario. Puede mejorar aún más para dar el nombre del nodo allí, así como el tipo de nodo.

Si desea nodos específicos que tienen un nodo secundario denominado Test uso de este "/ documento/Pruebas [Test]"

Más ejemplos se pueden encontrar en MSDN http://msdn.microsoft.com/en-us/library/ms256086.aspx

Cuestiones relacionadas