Как правильно преобразовать XML в таблицу столбцов? - PullRequest
0 голосов
/ 19 февраля 2020

Я использую API stand4 с моим сценарием stands4, чтобы запросить аббревиатуру и получить таблицу значений этого аббревиатуры, аббревиатуру, имя категории и имя родительской категории. Например,

# stands4

DEFINITION                                                  CATEGORY NAME                                               PARENT CATEGORY NAME
Australian Broadcasting Corporation                         Companies & Firms                                           Business
Australian Broadcasting Corporation                         News & Media                                                Community
ATP Binding Cassette                                        Physiology                                                  Medical
Activity Based Costing                                      Military                                                    Governmental
Activity Based Costing                                      US Government                                               Governmental
Alcoholic Beverage Control                                  Law & Legal                                                 Governmental
[...]

Мой грязный скрипт sed stands4 следующий

# VARIABLE TO BE SET 
USER_ID=<userID>                                                # sent by mail after registration at http://www.abbreviations.com/api.php
TOKEN_ID=<token ID>                                             # sent by mail after registration at http://www.abbreviations.com/api.php
SPACE_SEPARATOR=60
curl -sL "http://www.stands4.com/services/v2/abbr.php?uid=$USER_ID&tokenid=$TOKEN_ID&term=$@" | \
sed '1 a\DEFINITION\tCATEGORY NAME\tPARENT CATEGORY NAME' | \
sed 's/<definition>/\n<definition>/g'| \
sed '1d;3d'| sed  's#.*<definition>\([^<]*\)</definition>.*<categoryname>\([^<]*\)</categoryname>.*<parentcategoryname>\([^<]*\)</parentcategoryname>.*#\1\t\2\t\3#'  | \
sed 's#&amp;#\&#g' |  expand -t $SPACE_SEPARATOR | less

API дает мне следующее XML (для первой строки)

#  curl -sL "http://www.stands4.com/services/v2/abbr.php?uid=$USER_ID&tokenid=$TOKEN_ID&term=abc" 

<results>
<definition> Australian Broadcasting Corporation
</definition>
<category>FIRMS
</category>
<categoryname>Companies &amp; Firms
</categoryname>
<parentcategory>BUSINESS
</parentcategory>
</result>
[...]

Как элегантно превратить вывод XML в таблицу столбцов без использования sed?

...