解析xml属性:奇怪的编码问题

时间:2013-05-15 09:42:31

标签: html r parsing encoding web-scraping

当我尝试解析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]])

但这不起作用。有什么帮助吗?

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.可能会在以后添加属性编码。