Linux-parsowanie xml

0

Cześć,
Potrzebuję z takiego fragmentu xml:

<pogo:lista>
    <pogo:Entry>
      <pogo:Active:>false</pogo:Active>
      <pogo:Value:>3</pogo:Value>
    </pogo:Entry>
    <pogo:Entry>
      <pogo:Active:>true</pogo:Active>
      <pogo:Value:>4</pogo:Value>
    </pogo:Entry>
</pogo:lista>

Za pomocą Shella w linux zsumować dane z taga Value gdzie active jest na true, Czyli w przypadku jak powyżej wynik powinien być równy 4 (jeden tag aktywny). Na ktoś pomysł jak to zrobić bez dodatkowych narzędzi w Linux??
Z góry bardzo dziękuję za pomoc

0

potrzebuję to wykonać bez xpath bo jakoś dziwnie ten xml jest sformatowany

0

Co jest w tym XMLu takiego dziwnego?

<pogo:lista>
    <pogo:entry>
        <pogo:active:>false
        </pogo:active>
        <pogo:value:>3
        </pogo:value>
    </pogo:entry>
    <pogo:entry>
        <pogo:active:>true
        </pogo:active>
        <pogo:value:>4
        </pogo:value>
    </pogo:entry>
</pogo:lista>
0

jak parsuje tego xml to mam info, że nie ma xpath

1

Ten XML jest niepoprawny.
Otwierasz tag: <pogo:value:>
i zamykasz </pogo:value>

0

to literówka, powinno być

<pogo:lista>
    <pogo:Entry>
      <pogo:Active>false</pogo:Active>
      <pogo:Value>3</pogo:Value>
    </pogo:Entry>
    <pogo:Entry>
      <pogo:Active>true</pogo:Active>
      <pogo:Value>4</pogo:Value>
    </pogo:Entry>
</pogo:lista>
2

W bashu się da, ale jest to droga na około...

#!/bin/bash
echo "<pogo:lista>\
    <pogo:Entry>\
      <pogo:Active>false</pogo:Active>\
      <pogo:Value>3</pogo:Value>\
    </pogo:Entry>\
    <pogo:Entry>\
      <pogo:Active>true</pogo:Active>\
      <pogo:Value>4</pogo:Value>\
    </pogo:Entry>\
   <pogo:Entry>\
      <pogo:Active>true</pogo:Active>\
      <pogo:Value>4</pogo:Value>\
    </pogo:Entry>\
</pogo:lista>" | tr -d " \n" | sed -e "s/<\/pogo:Active><pogo:Value>/#/g" | tr "><" "\n\n" | egrep -i "true" | sed -e "s/true#//g" | awk 'BEGIN{s=0} {s+=$1} END {print s}'

Możesz stopniowo dodawać kolejne polecenia po | i patrzeć jakie są kroki przetwarzania.

0

ok, właśnie o coś takiego mi chodziło, przetestuję to sobie. dziękuję

0

a kojarzy ktoś dlaczego mogę otrzymywać taki komunikat "argument list too long" przy długim xml?

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0