我想将UTF-8数字引用转换为xmllint输出中的字符。
重现:
$ wget http://il.srgssr.ch/integrationlayer/1.0/ue/rts/video/play/4727630.xml
$ xmllint --xpath "/Video/AssetMetadatas/AssetMetadata/title/text()" 4727630.xml && echo
Le jardin apprivoisé - Entre pierre et bois
我希望输出为:
Le jardin apprivoisé - Entre pierre et bois
我已经阅读了手册页并尝试了不同的选项,但没有任何效果。
如果可能的话,我想使用xmllint中的选项来实现这一点,或者如果使用Linux发行版中常见的另一个命令行工具无法实现这一点。
谢谢!
答案 0 :(得分:3)
据我所知,这个问题有点过时了,我来自Google,希望与未来的访问者分享可能的答案。 有必要稍微更改xpath表达式并使用string()函数而不是text():
$ wget http://il.srgssr.ch/integrationlayer/1.0/ue/rts/video/play/4727630.xml
$ xmllint --xpath "string(/Video/AssetMetadatas/AssetMetadata/title)" 4727630.xml
Le jardin apprivoisé - Entre pierre et bois
答案 1 :(得分:0)
我发现了我认为可以完全解决此问题的另一种方法。技巧是使用GNU提供的recode
库将输出编码从html
更改为utf8
。
$ wget http://il.srgssr.ch/integrationlayer/1.0/ue/rts/video/play/4727630.xml $ xmllint --xpath "/Video/AssetMetadatas/AssetMetadata/title/text()" 4727630.xml | recode html..utf8 Le jardin apprivoisé - Entre pierre et bois
recode
可以使用apt-get install recode
安装。