在R中解析XML时导致错误的ASCII实体

时间:2013-06-05 23:25:42

标签: xml r

我正在尝试使用R中的xml包解析网页.XML在属性名称中有一些特殊字符,例如:<B name="A &lt; 0">,getNodeSet()不喜欢。我认为使用&lt;的重点是避免&lt;被保留。

这是一个可重现的示例,会抛出错误。

x <- '
<A>
<B name="1">
<C name="A &lt; 0"> Value </C>
</B>
</A>
'

getNodeSet(xmlRoot(xmlTreeParse(x)),"/A/B/C")

如何使用getNodeSet干净地解析这个?

我有一个快速的解决方法,我在原始文本上使用gsub来查找和替换&lt;的实例,但我担心替换我不打算替换的东西。该文件在属性名称中也有&quot;个实例。同样的问题。

是否有比gsub更优雅,更通用的解决方案?

非常感谢!

1 个答案:

答案 0 :(得分:0)

试试这个例子:

   xpathSApply(xmlParse(x),"/A/B/C",xmlGetAttr,'name')
   [1] "A < 0"

xpathSApply相当于sapply。另请注意xmlParse而非xmlTreeParse的使用。