2012-08-07 114 views
0

我有一个很大的XML文件(大约180M左右),它有很多<offering>元素。我想删除所有没有与某个事物匹配的子元素的<offering><parent_id>12345</parent_id>)。我从来没有使用Xquery,它看起来有点吓人(阅读:比我想象的更复杂的方式)。任何人都可以推荐一个程序,让我轻松做到这一点?删除具有匹配子元素的XML文件的元素

在我的大脑中,它应该像DELETE <offering> WHERE <parent_id> <> '12345'一样简单,但是我抬头看的所有xquery看起来像你必须声明一大堆垃圾,而且它只是删除一些东西而已。

我找到了XML Marker Free,它精美地处理大文件,但我找不到一个简单的方法来删除符合特定条件的多个元素。

编辑:我越来越接近使用VBScript和XML DOM *

回答

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)