Добрый день.
Мне необходимо стандартными средствами shell распарсить следующий xml документ и вывести результат в а-ля csv формат:
<ns2:OperatorDefinition xmlns="urn:swift:saa:xsd:operatorprofile" xmlns:ns2="urn:swift:saa:xsd:impex:operator" xmlns:ns3="urn:swift:saa:xsd:unit" xmlns:ns4="urn:s
wift:saa:xsd:licenseddestination" xmlns:ns5="urn:swift:saa:xsd:operator">
<ns2:Operator>
<ns5:Identifier>
<ns5:Name>IIvanov</ns5:Name>
</ns5:Identifier>
<ns5:Description>Ivanov, Ivan</ns5:Description>
<ns5:OperatorType>HUMAN</ns5:OperatorType>
<ns5:AuthenticationType>LOCAL</ns5:AuthenticationType>
<ns5:Profile>
<Name>PROFILE_1</Name>
</ns5:Profile>
<ns5:Unit>
<ns3:Name>None</ns3:Name>
</ns5:Unit>
<ns5:Unit>
<ns3:Name>Custody</ns3:Name>
</ns5:Unit>
</ns2:Operator>
</ns2:OperatorDefinition>
<ns2:OperatorDefinition xmlns="urn:swift:saa:xsd:operatorprofile" xmlns:ns2="urn:swift:saa:xsd:impex:operator" xmlns:ns3="urn:swift:saa:xsd:unit" xmlns:ns4="urn:s
wift:saa:xsd:licenseddestination" xmlns:ns5="urn:swift:saa:xsd:operator">
<ns2:Operator>
<ns5:Identifier>
<ns5:Name>PPetrov</ns5:Name>
</ns5:Identifier>
<ns5:Description>Petrov, Petr</ns5:Description>
<ns5:OperatorType>HUMAN</ns5:OperatorType>
<ns5:AuthenticationType>LOCAL</ns5:AuthenticationType>
<ns5:Profile>
<Name>PROFILE_2</Name>
</ns5:Profile>
<ns5:Unit>
<ns3:Name>None</ns3:Name>
</ns5:Unit>
</ns2:Operator>
</ns2:OperatorDefinition>
Что я ожидаю увидеть:
IIvanov;Ivanov,Ivan;HUMAN;LOCAL;PROFILE_1
PPetrov;Petrov, Petr;HUMAN;LOCAL;PROFILE_2
Для решения задачи парсинга я воспользовался советом на stackoverflow:
stackoverflow.com/questions/893585/how-to-parse-xm...read_dom () {
local IFS=\>
read -d \< ENTITY CONTENT
}
while read_dom; do
if [[ $ENTITY = "ns5:Name" ]] ; then
echo $CONTENT
fi
done < input.xml
Вопрос: как доработать скрипт, чтобы получить желанный результат?