2012-08-07 160 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)