使用R或Python将xml编辑为文本文件

时间:2014-04-15 17:05:15

标签: xml r

我有一个xml,我想创建一个脚本,删除它的一部分,只保留受限的部分。我有R,Python和Ruby。你知道我怎么做吗?我很感激代码建议,因为我的编码技巧相当有限:D xml有点像下面这样:

<xml><sometag><somemoretag></somemoretag></sometag><records><somedetails></somedetails><somedetails2></somedetails2></records>

我希望结果为:

<xml><records><somedetails></somedetails><somedetails2></somedetails2></records>

非常感谢。

1 个答案:

答案 0 :(得分:0)

我刚刚解决了这个问题。可能有更优雅的方式处理它,但由于R是我的首选,我做了:

require('XML')
a <- toString.XMLNode(xmlObject)
b <- gsub(oldString, newString, a, perl=TRUE)
c <- xmlTreeParse(b)

toString.XMLNode将XML转换为字符串。 gsub使用正则表达式将oldString替换为newString。然后xmlTreeParseb变回XML对象。

以下编辑:我没有正确阅读您的问题。以上内容将帮助您以非常自定义的方式更改XML。但在您的情况下,将XML转换为树并导航树更容易。

require('XML')
#Note that your code did not have a final </xml> -- I added that.
p <- xmlParse('<xml><sometag><somemoretag></somemoretag></sometag><records><somedetails></somedetails><somedetails2></somedetails2></records></xml>')
q <- getNodeSet(p, '/xml/records')
q
[[1]]
<records>
  <somedetails/>
  <somedetails2/>
</records> 

attr(,"class")
[1] "XMLNodeSet

通过键入要作为getNodeSet的第二个参数的节点的路径,您可以将树导航到所需的位置。