2010-06-27 103 views
3

我有一堆.xml文件的节点导致不可思议的并发症。我想删除这些节点,但确保他们的孩子得到保存(而不是数据)。最终我想从每个.xml中获取数据并构建一个数据框。看起来xmlTreeParse和xmlToList一起会有所帮助,但后者只适用于扁平结构。我已经玩弄了unlisting来自xmlToList的输出,然后将其转换为数据帧,但输出有点时髦。删除不需要的XML节点

我想过写一个函数要经过的所有文件,并删除我不想,但是我不知道如何在R.

任何建议,做到这一切的标签?

+0

如果您在请求的更改之前和之后提供了xml的示例,它可能会有所帮助。 – 2010-06-27 12:44:11

+0

以下是我开始使用的xml的摘录: <?xml version ='1.0'?> SWES_2 0.0.2 2010-06-26T18: 19:02.598 2010-06-26T18:21:11.742梅丽莎 3 2010-06-26 1 dzemeni 2 684656856 0 scottyaz 2010-06-27 12:56:52

+0

我想简单地去掉标签 – scottyaz 2010-06-27 12:57:18

回答

3

在XSLT中执行起来很简单。这增加了身份转换:

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

使用XML的hastens the coming of the Elder Gods正则表达式,因此不推荐。

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' ?>粘贴,并将其写入截断的文件。或者您也可以进一步像P3a_Village1从使用xpathApply这样的XML文件中提取信息:

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

我希望解决的办法是你在找什么。请让我知道它是否有帮助。

+0

感谢您的帮助。我认为这将是一种流行的方式,因此我决定使用xslt脚本。好吧... – scottyaz 2010-06-28 01:42:57