I'm trying to read a XML file as a text in termux terminal (just like cat). The XML file is this:
<?xml version="1.0" encoding="UTF-8"?>
<book name="2ª João" abbrev="2jo" chapters="1">
<chapter number="1">
<verse number="1">O presbítero à senhora eleita e aos seus filhos, a quem amo na verdade, — e não apenas eu os amo, mas também todos os que conhecem a verdade —</verse>
<verse number="2">por causa da verdade que permanece em nós e estará conosco para sempre.</verse>
<verse number="3">A graça, a misericórdia e a paz da parte de Deus Pai e de Jesus Cristo, seu Filho, estarão conosco em verdade e em amor.</verse>
There's books, chapters and verses. I want to print a whole chapter at once.
I'm using mikefarah/yq implementation
So I run:
yq -p xml '.book.chapter' < nvi-2jo.xml
Which returns:
+@number: "1"
verse:
- +content: O presbítero à senhora eleita e aos seus filhos, a quem amo na verdade, — e não apenas eu os amo, mas também todos os que conhecem a verdade —
+@number: "1"
- +content: por causa da verdade que permanece em nós e estará conosco para sempre.
+@number: "2"
- +content: A graça, a misericórdia e a paz da parte de Deus Pai e de Jesus Cristo, seu Filho, estarão conosco em verdade e em amor.
I want to get rid of this "+@number:" and "+content" and print only the text.
Desired output:
''' O presbítero à senhora eleita e aos seus filhos, a quem amo na verdade, — e não apenas eu os amo, mas também todos os que conhecem a verdade — por causa da verdade que permanece em nós e estará conosco para sempre. A graça, a misericórdia e a paz da parte de Deus Pai e de Jesus Cristo, seu Filho, estarão conosco em verdade e em amor. '''
The levels of your XML are
book
->chapter
->verse
. With.book.chapter
you only go down tochapter
. Go further into.verse
, and iterate over its items with[]
. These items contain anumber
attribute and a text node as content. You get both, type-marked, as fields of a map. If you only want the text nodes, descend once more, into+content
: