xmllint:如何将UTF-8数字引用转换为字符

时间:2015-02-04 18:00:09

标签: utf-8 xmllint

我想将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发行版中常见的另一个命令行工具无法实现这一点。

谢谢!

2 个答案:

答案 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安装。