我正在尝试提取包含指定标记的XML文件的所有部分。我在网上搜索,发现它有用。
xmllint --xpath "/all/string(//title)"
但它只返回第一个结果,我怎样才能找到所有结果?谢谢!
示例XML
<programme start="20170913125500 +0100" stop="20170913144500 +0100" channel="3b6963d34ba31ea21db5c3aee8e3b26f">
<title lang="eng">Yangtse Incident</title>
<sub-title lang="eng">(1957) Michael Anderson's drama, starring Richard Todd and William Hartnell, tells the true story of HMS Amethyst, a British frigate captured by Chinese communists during Mao's revolution. [AD,S]</sub-title>
</programme>
<programme start="20170913144500 +0100" stop="20170913165500 +0100" channel="3b6963d34ba31ea21db5c3aee8e3b26f">
<title lang="eng">The Comancheros</title>
<sub-title lang="eng">(1961) Western starring John Wayne and Stuart Whitman. A Texas Ranger is forced to team up with his prisoner while he's on a covert mission to take on a band of thieves and gunrunners. [S]</sub-title>
</programme>
<programme start="20170913165500 +0100" stop="20170913185500 +0100" channel="3b6963d34ba31ea21db5c3aee8e3b26f">
<title lang="eng">The Cockleshell Heroes</title>
<sub-title lang="eng">(1955) World War II drama. In a true-life tale of incredible bravery, ten marines try to break the blockade of Bordeaux. With José Ferrer, Trevor Howard, Victor Maddern and Anthony Newley. [S]</sub-title>
</programme>
<programme start="20170913185500 +0100" stop="20170913190500 +0100" channel="3b6963d34ba31ea21db5c3aee8e3b26f">
<title lang="eng">Dunkirk Interview Special</title>
<sub-title lang="eng">Stars Harry Styles, Mark Rylance, Jack Lowden, Fionn Whitehead and Tom Glynn-Carney talk about making director Christopher Nolan's intense Second World War dramatic thriller. [S]</sub-title>
</programme>
结果应为
Yangtse Incident
The Comancheros
The Cockleshell Heroes
Dunkirk Interview Special
答案 0 :(得分:0)
我无法以你想要的方式使用xmllint。最接近的是:
xmllint --xpath "//something/programme/title/text()" test.xml
但这会在一行中为您提供所有输出。
对我来说最好的解决方案是:
xmllint --xpath "//something/programme/title" test.xml | sed 's/<\/title>/\n/g' | sed 's/<title lang="eng">//g'
当然,您可以使用任何其他工具来清理输出。
答案 1 :(得分:0)
如果您能够使用xmlstarlet而不是xmllint,则可以使用sel
(select) command ...
==> xml sel -t -m "//programme/title" -v . -n input.xml
Yangtse Incident
The Comancheros
The Cockleshell Heroes
Dunkirk Interview Special