如何使用vbscript删除XML文件中的节点?
问题描述:
我想从每个<product>
节点删除<P_ID>
& <P_Name>
节点。如何使用vbscript删除XML文件中的节点?
这里是XML的样子:
<products>
<product>
<P_ID><![CDATA[4]]></P_ID>
<Item_T><![CDATA[Pt]]></Item_T>
<P_Name><![CDATA[5]]></P_Name>
</product>
<product>
<P_ID><![CDATA[4]]></P_ID>
<Item_T><![CDATA[Pt]]></Item_T>
<P_Name><![CDATA[5]]></P_Name>
</product>
<product>
<P_ID><![CDATA[4]]></P_ID>
<Item_T><![CDATA[Pt]]></Item_T>
<P_Name><![CDATA[5]]></P_Name>
</product>
<product>
<P_ID><![CDATA[4]]></P_ID>
<Item_T><![CDATA[Pt]]></Item_T>
<P_Name><![CDATA[5]]></P_Name>
</product>
</products>
有成千上万的产品节点。
这是我到目前为止有:
Set objXMLDoc = Wscript.CreateObject("Microsoft.XMLDOM")
objXMLDoc.async = False
Dim XMLFile
XMLFile = "products.xml"
objXMLDoc.load(XMLFile)
Set nodes = objXMLDoc.selectNodes("products/product/P_ID")
For Each node In nodes
objXMLDoc.documentElement.remove
Next
objXMLDoc.Save(XMLFile)
答
你需要在前面加上一个斜线从根节点引用您的XPath字符串。然后从父节点可以调用removeChild()
方法传递节点删除,这样...
Set nodes = objXMLDoc.selectNodes("/products/product/P_ID | " & _
"/products/product/P_Name")
For Each node In nodes
node.parentNode.removeChild(node)
Next
它说的参数节点不是此节点的子节点。 – Gast1
对不起,我们需要回到父级,然后调用'removeChild()'。我已经更新了答案。 – davmos
我们该怎么做? – Gast1