删除不需要的xml节点

时间:2010-06-27 12:41:51

标签: xml regex r

我有一堆带有节点的.xml文件,这些节点会造成麻烦的并发症。我想删除这些节点但确保保留其子节点(不是层次结构而是数据)。最终我想从每个.xml获取数据并构建一个数据帧。看起来像xmlTreeParse和xmlToList会有所帮助,但后者只适用于平面结构。我已经玩过将xmlToList的输出展开,然后将其转换为数据帧,但输出有点时髦。

我想过简单地写一个函数来浏览所有文件并删除我不想要的所有标签,但是我不知道如何在R中这样做。

任何建议?

2 个答案:

答案 0 :(得分:3)

在XSLT中做起来很简单。将其添加到身份转换:

<xsl:template match="poop">
   <xsl:apply-templates select="node()"/>
</xsl:template>

在XML hastens the coming of the Elder Gods上使用正则表达式,不建议这样做。

答案 1 :(得分:0)

看看这是否是您正在寻找的,您可以使用XML中的CRAN包来解析XML文档。您可以使用以下策略仅获取<poop>标记:

me<-xmlTreeParse(filename,useInternalNodes=T)
pooptags<-xpathApply(me,"//poop")

pooptags将包含以下信息:

<poop>
  <P3a_Village1>dzemeni</P3a_Village1>
  <P4_HousholdNumber/>
  <P5_VisitNumber>2</P5_VisitNumber>
</poop> 

您可以使用R中的<?xml version='1.0' ?>使用粘贴命令将其粘贴并将其写入截断的文件。或者您可以使用xpathApply从XML文件中进一步提取P3a_Village1等信息,如下所示:

village<-xpathApply(me,"//poop/P3a_Village1")

我希望解决方案能满足您的需求。如果有帮助,请告诉我。