Я пытаюсь преобразовать телефонную книгу XML, загруженную из FritzBox, в файл CSV. Элемент контакта в XML имеет реальное имя и один ко многим элементам телефонии/номера. Меня интересуют только элементы с атрибутом работа и дом.
Полученный файл CSV должен иметь три столбца:
- Col1 Значение элемента /contact/realName
- Значение Col2 элемента /контакт/телефония/номер с атрибутом "работа"
- Значение Col3 элемента /contact/telephony/number с атрибутом "home"
Пример XML с одним контактом:
<phonebooks>
<phonebook name="Telefonbuch">
<contact>
<category/>
<person>
<realName>Paul Tiger</realName>
</person>
<telephony nid="4">
<number type="work" id="1" vanity="" prio="1">071150885524</number>
<number type="home" prio="0" id="3">0151-19630027</number>
</telephony>
<services/>
</contact>
</phonebook>
</phonebooks>
Мне удалось извлечь реальное имя и номер с помощью:
xmlstarlet sel -t -m //contact/* -v "concat(realName,';',number)" test.xml
;Paul Tiger;;071150885524;
Мне нужно что-то вроде «ЕСЛИ ТОГДА» в выводе для экспорта определенного числа на основе атрибута типа home или work .
Есть ли что-то вроде ЕСЛИ ТО, как это.
xmlstarlet ...
-v "concat(
realName,';',
IF type="work" THEN number,';'
IF type="home" THEN number,';'
)" test.xml