使用 logstash 解析带有命名空间的 XML 文档
Parsing XML document with namespace using logstash
我正在尝试使用 logstash.I 解析以下 xml 数据,当我在实际文档上尝试解析时,我能够通过从 tags.But 中删除命名空间来做到这一点其中有命名空间,它无法解析字段。有人可以帮助我使用命名空间吗?或者我是否在其他地方出错了?
<Book:Body>
<Book:Head>
<bookname>Book:Name</bookname>
<ns:Hello xmlns:ns="www.example.com">
<ns:BookDetails>
<ns:ID>123456</ns:ID>
<ns:Name>ABC</ns:Name>
</ns:BookDetails>
</ns:Hello xmlns:ns="www.example.com">
</Book:Head>
</Book:Body>
以下是我的配置文件:
multiline {
pattern => "<Book:Body>"
what => "previous"
negate => "true"
}
xml {
store_xml => "false"
source => "message"
remove_namespaces => "true"
xpath =>[
"/Book/Book/BookDetails/ID/text()","ID",
"/Book/Book/BookDetails/Name/text()","Name"
]
}
mutate {
add_field => ["IDIndexed", "%{ID}"]
add_field => ["NameIndexed", "%{Name}"]
}
因为它没有被解析,我只是使用 mutate 获取 %{ID} 和 %{Name} 而不是获取它们的实际值。
问题出在 xpath 中:
试试这个
xpath => [
"/Body/head/Hello/BookD/BookDetails/ID/text()", "ID",
"/Body/head/Hello/BookD/BookDetails/Name/text()", "Name",
]
我正在尝试使用 logstash.I 解析以下 xml 数据,当我在实际文档上尝试解析时,我能够通过从 tags.But 中删除命名空间来做到这一点其中有命名空间,它无法解析字段。有人可以帮助我使用命名空间吗?或者我是否在其他地方出错了?
<Book:Body>
<Book:Head>
<bookname>Book:Name</bookname>
<ns:Hello xmlns:ns="www.example.com">
<ns:BookDetails>
<ns:ID>123456</ns:ID>
<ns:Name>ABC</ns:Name>
</ns:BookDetails>
</ns:Hello xmlns:ns="www.example.com">
</Book:Head>
</Book:Body>
以下是我的配置文件:
multiline {
pattern => "<Book:Body>"
what => "previous"
negate => "true"
}
xml {
store_xml => "false"
source => "message"
remove_namespaces => "true"
xpath =>[
"/Book/Book/BookDetails/ID/text()","ID",
"/Book/Book/BookDetails/Name/text()","Name"
]
}
mutate {
add_field => ["IDIndexed", "%{ID}"]
add_field => ["NameIndexed", "%{Name}"]
}
因为它没有被解析,我只是使用 mutate 获取 %{ID} 和 %{Name} 而不是获取它们的实际值。
问题出在 xpath 中: 试试这个
xpath => [
"/Body/head/Hello/BookD/BookDetails/ID/text()", "ID",
"/Body/head/Hello/BookD/BookDetails/Name/text()", "Name",
]