删除具有匹配子元素的XML文件元素

时间:2012-08-07 00:14:34

标签: xml xml-parsing

我有一个大型XML文件(180兆左右),它有很多<offering>个元素。我想删除所有没有与某个事物(<offering>)匹配的子元素的<parent_id>12345</parent_id>。我从来没有使用过Xquery,它看起来有点令人生畏(读:方式比我认为的要复杂得多)。任何人都可以推荐一个允许我轻松做到这一点的程序吗?

在我的大脑中,它应该像DELETE <offering> WHERE <parent_id> <> '12345'一样简单,但我查找的所有xquery看起来都必须声明大量的废话,并且只需删除一些内容就可以使用多行。

我发现XML Marker Free,它可以很好地处理大文件,但我找不到一种简单的方法来删除符合特定条件的多个元素。

编辑:我正在接近使用vbscript和XML DOM。*

1 个答案:

答案 0 :(得分:0)

通过windows vbscript开始使用XML DOM,并提出了这个似乎完美无缺的解决方案。

Set objXMLDoc = Wscript.CreateObject("Microsoft.XMLDOM") 
objXMLDoc.async = False 

Dim XMLFile
XMLFile = "services.xml"
objXMLDoc.load(XMLFile) 
Set nodes = objXMLDoc.selectNodes("xml/offering/parent_id[. != '10001']")
For Each node In nodes
  objXMLDoc.documentElement.removeChild(node.parentNode)
Next

objXMLDoc.Save(XMLFile)