我有一个大型XML文件(180兆左右),它有很多<offering>
个元素。我想删除所有没有与某个事物(<offering>
)匹配的子元素的<parent_id>12345</parent_id>
。我从来没有使用过Xquery,它看起来有点令人生畏(读:方式比我认为的要复杂得多)。任何人都可以推荐一个允许我轻松做到这一点的程序吗?
在我的大脑中,它应该像DELETE <offering> WHERE <parent_id> <> '12345'
一样简单,但我查找的所有xquery看起来都必须声明大量的废话,并且只需删除一些内容就可以使用多行。
我发现XML Marker Free,它可以很好地处理大文件,但我找不到一种简单的方法来删除符合特定条件的多个元素。
编辑:我正在接近使用vbscript和XML DOM。*
答案 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)