2017-08-30 58 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