0

多くの<offering>要素を含む大きな XML ファイル (180 MB 程度) があります。<offering>特定のもの ( ) に一致する子要素を持たない s をすべて削除したいと考えてい<parent_id>12345</parent_id>ます。私は Xquery を使ったことがなく、少し難しそうに見えます (私が思っているよりもずっと複雑です)。これを簡単に実行できるプログラムを誰かに勧めてもらえますか?

私の脳では、それは同じくらい簡単なはずですが、DELETE <offering> WHERE <parent_id> <> '12345'私が調べたすべてのxqueryは、大量のがらくたを宣言する必要があるように見え、何かを削除するだけで複数の行になります。

大きなファイルを見事に処理する XML Marker Free を見つけましたが、特定の条件に一致する複数の要素を簡単に削除する方法が見つかりません。

編集: vbscript と XML DOM を使用して近づいています。*

4

1 に答える 1

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)
于 2012-08-07T01:08:43.460 に答える