2

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> 

しかし、属性 title を読み取ろうとすると、次のようになります。

xpathApply(doc,'//item',xmlGetAttr,'title')
[[1]]
[1] "é"

[[2]]
[1] "ï"

次のような他のxpathバージョンを試しました:

  xpathApply(doc,'//item/@title') 
  xmlAttrs(xpathApply(doc,'//item')[[1]])

しかし、これはうまくいきません。何か助けてください。

4

1 に答える 1

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エンコーディングが追加されています。後で属性のエンコーディングが追加される可能性があります?xmlValueencoding: experimental functionality and parameter related to encoding.

于 2013-05-15T10:54:38.990 に答える