Ich habe diese XMLWarum funktioniert meine XMLStarlet-Abfrage nicht, wenn sie Anführungszeichen enthält?
<Result>
<Dataset name='ident1'>
<Row name='a1'>
<queryname>cat0</queryname>
<superfilename>cat1</superfilename>
<indexfilename>cat2</indexfilename>
</Row>
<Row name='a2'>
<queryname>cat3</queryname>
<superfilename>cat4</superfilename>
<indexfilename>cat5</indexfilename>
</Row>
<Row name='a3'>
<queryname>cat6</queryname>
<superfilename>cat7</superfilename>
<indexfilename>cat8</indexfilename>
</Row>
</Dataset>
<Dataset name='Result 2'>
</Dataset>
<Dataset name='Result 3'>
</Dataset>
<Dataset name='Result 4'>
</Dataset>
</Result>
ich die Anzahl der Zeilen von Dataset mit dem Namen Ident1 zählen möchten. Der xmlstarlet Befehl Ich verwende ist:
xmlstarlet sel -t -v 'count(/Result/Dataset[@name='ident1']/Row)' oscar.xml
ich denke, es sollte funktionieren, aber es ist 0. Rückkehr
Ich habe andere Variationen ausprobiert, aber alle von ihnen zurückkehren 0.
xmlstarlet sel -t -v 'count(/Result/Dataset[@name='ident1'])' oscar.xml
xmlstarlet sel -t -v 'count(/Result/Dataset[@name='ident1'][*]/Row)' oscar.xml
xmlstarlet sel -t -v 'count(/Result/Dataset[@name='ident1']/Row[*])' oscar.xml
Was mache ich falsch?
HINWEIS
Wenn ich ein anderes Element wie DataSet zählen gibt es richtig 4.
xmlstarlet sel -t -v 'count(/Result/Dataset)' oscar.xml
Sie verwenden die gleichen Anführungszeichen wie die Shell-Syntax und die xmlstarlet-Syntax. –
... übrigens, StackOverflow Syntax Highlighting (obwohl oft falsch für die Shell) ist eigentlich etwas, was Sie möglicherweise als einen nützlichen Hinweis in diesem Fall genommen haben. –
Ich verwende Notepad ++ als Editor mit "Batch" -Syntax. Ich sollte "Bash" -Syntax hinzufügen, um dies zu vermeiden ... –