如何使用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 
+0

它说的参数节点不是此节点的子节点。 – Gast1

+0

对不起,我们需要回到父级,然后调用'removeChild()'。我已经更新了答案。 – davmos

+0

我们该怎么做? – Gast1