скрипт для извлечения деталей из xml - PullRequest
0 голосов
/ 24 августа 2011

если есть какой-либо XML-файл, как показано ниже:

<soap env="abc" id="xyz">
<emp>acdf</emp>
<Workinstance name="ab" id="ab1">
<x>1</x>
<y>2</y>
</Workinstance>
<projectinstance name="cd" id="cd1">
<u>1</u>
<v>2</v>
</projectinstance>
</soap>

Я хочу извлечь поле идентификатора в рабочем режиме, используя скрипт Unix

Я попробовал grep, но он получает весь XML-файл. Может кто-нибудь помочь мне как его получить?

Ответы [ 3 ]

4 голосов
/ 24 августа 2011

Возможно, вы захотите рассмотреть что-то вроде XMLStarlet , который реализует спецификации XPath / XQuery.

Синтаксический анализ XML с помощью регулярных выражений практически невозможен даже в лучших условиях, поэтому чем раньшевы отказываетесь от попыток сделать это с помощью grep, тем лучше вы, вероятно, будете.

1 голос
/ 24 августа 2011

XmlStarlet кажется инструментом, который я искал!

Чтобы извлечь тег, попробуйте сделать следующее:

cat your_file.xml | xmlstarlet sel -t -v 'soap/Workinstance/@id'

"soap / Workinstance / @ id" - это выражение XPath, которое получит атрибут id внутри тега Workinstance. Используя флаг "-v", вы просите xmlstarlet напечатать извлеченный текст на стандартный вывод.

0 голосов
/ 24 августа 2011

Если у вас есть Ruby

$ ruby -ne 'print $_.gsub(/.*id=\"|\".*$/,"" ) if /<Workinstance/' file
ab1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...