当我尝试解析xml / html文档的某个属性时,我遇到了一个奇怪的编码问题。 这是一个可重复的例子,包含2个带有2个标题的项目(请注意这里使用法语口音)
library(XML)
doc <- htmlParse('<note>
<item title="é">1</item>
<item title="ï">3</item>
</note>',asText=TRUE,encoding='UTF-8')
现在使用xpathApply
,我可以读取这样的项目。请注意,此处特殊的重音符号格式正确。
xpathApply(doc,'//item')
[[1]]
<item title="é">1</item>
[[2]]
<item title="ï">3</item>
但是当我尝试阅读我的属性标题时,我明白了:
xpathApply(doc,'//item',xmlGetAttr,'title')
[[1]]
[1] "é"
[[2]]
[1] "ï"
我尝试了其他xpath版本:
xpathApply(doc,'//item/@title')
xmlAttrs(xpathApply(doc,'//item')[[1]])
但这不起作用。有什么帮助吗?
答案 0 :(得分:2)
它不漂亮,我不能测试这台linux机器,但尝试:
xpathApply(doc,'//item',
function(x) iconv(xmlAttrs(x,'title'), "UTF-8", "UTF-8"))
[[1]]
title
"é"
[[2]]
title
"ï"
xmlAttrs
调用RS_XML_xmlNodeAttributes
检查此代码似乎没有处理编码的工具。 xmlValue
调用此R_xmlNodeValue
已添加编码。查看?xmlValue
我们encoding: experimental functionality and parameter related to encoding.
可能会在以后添加属性编码。