2017-08-30 1 views
0

J'ai un fichier XML avec 100 enregistrements, dans l'un des enregistrements, le nœud XML est manquant car la valeur n'est pas disponible dans le système source.Comment gérer les nœuds vides dans XPATH pour le filtre XML de logstash

Le chemin xml est comme ceci:

/Envelope/Body/response/table/row/description/text 

dans d'autres enregistrement manquant le chemin est jusqu'à ici:

/Envelope/Body/response/table/row/description 

Le nœud est manquant car il n'y a pas de valeur.

Comment peut-on définir la XPATH pour ce cas

xpath => [ 
     "/Envelope/Body/response/table/row/description/text()","description" 
] 

Répondre

0

Il est très rarement approprié d'utiliser text() à la fin d'un chemin. Habituellement, vous voulez la valeur de chaîne de l'élément. L'utilisation de text() échoue si l'élément est vide et échoue si la valeur contient des commentaires ou des instructions de traitement. Le chemin /Envelope/Body/response/table/row/description renvoie le nœud d'élément et, dans de nombreux contextes, vous obtiendrez automatiquement la valeur de chaîne de l'élément; Si vous avez besoin d'être explicite, appelez la fonction string() pour extraire la valeur de la chaîne. Pour un élément vide, ce sera "".

+0

Comment puis-je l'appliquer dans ma syntaxe xpath de logstash. Actuellement, je reçois une erreur et cet enregistrement est manqué – ritesh

+0

Si vous obtenez une erreur alors dites-nous ce que vous faites et quelle est l'erreur. (Je ne connais pas logstash donc je ne sais pas, par exemple, quelle version de XPath il implémente). –

+0

Salut merci pour response.Logstash utilise la bibliothèque nokogiri xml. http://www.nokogiri.org/. Disons que j'ai 3 enregistrements. Dans la sortie, je ne reçois que 2 enregistrements et 1 enregistrement est manqué car 1 nœud est manquant. Dans le code de ruby ​​je reçois l'erreur d'exception de rubis. Je ne connais pas beaucoup de détails sur l'erreur. Mais la ligne de fond est que l'enregistrement est manqué – ritesh