Assumindo o seguinte XML (modificado):
<?xml version="1.0"?>
<root>
<ContactPerson>
<GivenName>John</GivenName>
<FamilyName>Wayne</FamilyName>
<PhoneFixList>
<PhoneFix>78787878</PhoneFix>
</PhoneFixList>
<EmailList>
<Email>[email protected]</Email>
</EmailList>
</ContactPerson>
<ContactPerson>
<GivenName>James</GivenName>
<FamilyName>Stewart</FamilyName>
<PhoneFixList>
<PhoneFix>90909090</PhoneFix>
</PhoneFixList>
<EmailList>
<Email>[email protected]</Email>
</EmailList>
</ContactPerson>
</root>
O XMLStarlet invocação
xml sel -t -m '//ContactPerson' -v 'concat(GivenName, " ", FamilyName, " ", PhoneFixList/PhoneFix, " ", EmailList/Email)' -nl file.xml
produz
John Wayne 78787878 [email protected]
James Stewart 90909090 [email protected]
A invocação do XMLStarlet contém um loop implícito sobre todos os ContactPerson
nós, e para cada um deles, os campos específicos são concatenados para produzir a saída correta. O -nl
no final faz com que uma nova linha seja impressa.