-5

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

<?xml version="1.0" encoding="UTF-8"?>
<UnitReport Qunatity="163" start-time="2012-06-22T07:00:01+00:00">
<Station guid="59A7C775-7A2F-4ABD-BD10-B82614D5B846">
<Property>
<ValueString name="StationType">HDA</ValueString>
</Property>
</Station>
<Operator name="Generic"/>
<Category name="NB HDD">
<Product part-no="04MJKG" serial-no="04MJKG26402313A00"/>
</Category>
<Property>
<ValueString name="Manufacturer Name">JAX</ValueString>
<ValueString name="Manufacturing Site">TXN</ValueString>
</Property>
<TestRun start-time="2012-06-22T07:00:01+00:00" grade="Pass" name="HDA">
<Property>
<ValueString name="Manufacturers_Part_Number">MQ01ABF050</ValueString>
</Property>
</TestRun>
</UnitReport>

В сценарии оболочки UNIX мне нужно извлечь значение тега ValueString из поля XML, где name - StationType. На основе каждого значения StationType мне нужно создавать ZIP-файлы. Пожалуйста, помогите мне.

1 ответ1

1

Попробуй это:

sed -n '/StationType/{s!<ValueString name="StationType">\(.*\)</ValueString>!\1!;p}' input.xml

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .