Ich habe eine XML-StrukturGriff verschachteltes Objekt mit Logstah und XPath
<Event>
<Core Id="10233" />
<Parameters>
<Parameter EngValue="1.0" DecValue="1.0" />
<Parameter EngValue="GCOM" />
<Parameter EngValue="1.0" DecValue="1.0" />
</Parameters>
</Event>
Ich möchte Logstash diese Struktur Ausgang:
{
"CoreID" : "10233",
"Parameter" : [
{
"EngValue" : "1.0",
"DecValue" : "1.0"
},
{
"EngValue" : "GCOM"
},
{
"EngValue" : "1.0",
"DecValue" : "1.0"
}
]
}
Mit den XML-Filter hat ich versucht:
xpath => [
"/Event/Core/@Id", "CoreID",
"/Event/Parameters/Parameter/@DecValue", "[Parameter][DecValue]",
"/Event/Parameters/Parameter/@EngValue", "[Parameter][EngValue]",
]
Aber bis jetzt habe ich nur dieses:
{
"CoreID" : "10233",
"Parameter" : {
"EngValue" : ["1.0", "GCOM", "1.0"],
"DecValue" : ["1.0", "1.0"]
}
}
Wie kann ich "Parameter" das Array anstelle seiner Attribute machen?
Ich habe versucht, einen Ruby-Filter zu verwenden, um das Objekt "Parameter" zu erstellen. Aber direkt nach dem XML-Filter (d. H. Wenn mein Ruby-Filter beginnt) muss ich die Arrays "EngValue" : ["1.0", "GCOM", "1.0"]
und "DecValue" : ["1.0", "1.0"]
"verbinden".
Das Problem ist, dass ich für jedes Element von "EngValue" das entsprechende Element in "DecValue" nicht kenne.
Tatsächlich wurde die Lösung nicht XPath verwenden, dank – cadoman