GNU/Linux >> Znalost Linux >  >> Linux

Linux Bash XMLLINT s XPATH

Můj oblíbený je xmlstarlet, protože se zdá být výkonnější než xmllint:

xmlstarlet sel -t -v '/resources/item[@id="index.php"]/description/text()' en.xml

jak nejlépe zacílit na konkrétní a poté přejít k jeho podřízenému prvku

Správný výraz XPath k tomu je:

/resources/item[@id="index.php"]/description/text()

V jednoduché angličtině:Začněte od uzlu dokumentu k prvku dokumentu resources , na jeho potomka item , ale pouze pokud je hodnota id atribut je "index.php", na jeho potomka description a získat jeho textovou hodnotu.

K ověřování dokumentů XML používám xmllint, ale nikdy ne pro výrazy cesty. V bash shellu (alespoň s Mac OS) existuje ještě jednodušší nástroj pro vyhodnocování výrazů XPath, nazvaný "xpath":

$ xpath en.xml '/resources/item[@id="index.php"]/description/text()'

Potom se získá následující výsledek:

Found 1 nodes:
-- NODE --
DESCRIPTION

Pokud stále preferujete xmllint, použijte jej následujícím způsobem:

$ xmllint --xpath '/resources/item[@id="index.php"]/description/text()' en.xml > result.txt

Ve výchozím nastavení --xpath implikuje --noout , což zabraňuje xmllint ve výstupu vstupního souboru XML. Aby byl výstup čitelnější, přesměruji výstup do souboru.

$ cat result.txt 
DESCRIPTION

Linux
  1. JQ Command v Linuxu s příklady

  2. Bash -c s pozičními parametry?

  3. Alias ​​s proměnnou v bash

  1. Analýza historie Bash v Linuxu

  2. Bash:počkejte s časovým limitem

  3. Linuxové distro jen s busyboxem a bashem?

  1. Vytvářejte hudbu na Linuxu s Ardorem

  2. Použití slovních modifikátorů s historií Bash v Linuxu

  3. Smažte zadané heslo ve výzvě skrytého hesla (Linux) pomocí zástupce