2017-08-30 118 views
0

我有一个包含100条记录的XML文件,其中一条记录中缺少xml节点,因为该值在源系统中不可用。如何在XPath中处理logstash xml筛选器中的空节点

XML路径是这样的:

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

其他丢失记录的路径是,直到在这里:

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

节点丢失,因为没有价值。

我们如何定义的XPath这种情况下

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

回答

0

这是很少在适当的路径的末尾使用text()。通常你需要元素的字符串值。如果元素为空,则使用text()失败,如果该值包含注释或处理指令,则失败。路径/Envelope/Body/response/table/row/description返回元素节点,并且在很多情况下,您将自动获取元素的字符串值;如果需要明确,请调用string()函数来提取字符串值。对于空的元素,这将是“”。

+0

我该如何将这个应用于我的logstash xpath语法中。目前我收到错误并且错过了此记录 – ritesh

+0

如果您收到错误,请告诉我们您正在做什么以及错误是什么。 (我不知道logstash,所以我不知道,例如,它实现的XPath版本是什么)。 –

+0

嗨感谢您的response.Logstash使用nokogiri xml库。 http://www.nokogiri.org/。可以说我有3条记录。在输出中,我只得到2条记录,1条记录因为缺少1个节点而错过。在ruby代码中,我得到了ruby异常错误。我不知道有关错误的更多细节。但底线是该记录错过 – ritesh

相关问题