Как перебрать файл xml с помощью xmlstarlet

предположим, у меня есть файл xml, как показано ниже:

<root>
<element1>value1</element1>
<element2>value2</element2>
<element3>value3</element3>
</root>

Я хочу перебрать этот XML-файл и сохранить имя и значение элемента на карте. Как это сделать с помощью xmlstarlet? Любая помощь будет оценена!


person user3636706    schedule 22.05.2014    source источник


Ответы (1)


это должно сделать это

xmlstarlet sel -t -m "/root[*]" -v . your.xml

Объяснение:

sel -t  

стандартная настройка для выбора с выводом

-m "/root[*]"

Для этого требуется совпадение (-m) с буквальным «корнем» документа «/root» и для каждого прямого узла, в данном случае определяемого как подстановочный знак XPath (*), выполнить что-нибудь. (К вашему сведению — чтобы получить удовольствие от xmlstarlet, вам нужно использовать немного XPath — просто убедитесь, что вы всегда заключаете в (). Также удобно при использовании '-i')

-v .

Это запрос значения элемента в текущем пути (-v) и '.' для текущего элемента в итерации. (поскольку мы не знаем имени)

your.xml

имя файла. (твой, не мой)

Надеюсь, это поможет вам.

-DG

person Dustin Glover    schedule 05.06.2014