2010-06-27 133 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