【发布时间】:2015-05-19 04:33:04
【问题描述】:
我正在尝试使用 vbscript 读取 xml 文件,如果 ATTRIBUTE_DATA 包含 V-3008,我想删除/删除整个 vuln .... 包含它的 vuln。 - 我已经尝试了所有不同的 XPath 变体,但无法找到能够做到这一点的变体。我已经让它删除了包含它的整行,但这并不好。我确实先搜索了这个网站,关于这个主题的内容并不多:https://stackoverflow.com/search?q=xpath+vbscript+remove+node
这是我已经开始的一些基本代码。谢谢你。
Set xmlDoc = _
CreateObject("Microsoft.XMLDOM")
xmlDoc.Async = "False"
xmlDoc.Load("C:\Users\somedude\Desktop\xml-development\myfile.xml")
strVulid = "V-3008"
xpath = "//CHECKLIST/VULN/STIG_DATA/ ATTRIBUTE_DATA[text() = '" & strVulid & "']/ATTRIBUTE_DATA "
For Each n In XMLDoc.SelectNodes(xpath)
n.parentNode.removeChild(n)
Next
xmlDoc.Save "C:\Users\somedude\Desktop\xml-development\myfile.xml"
msgbox "done"
这里是示例 XML:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CHECKLIST>
<SV_VERSION>DISA STIG Viewer : 1.2.0</SV_VERSION>
<ASSET>
<ASSET_TYPE>Computing</ASSET_TYPE>
<HOST_NAME>HOST NAME</HOST_NAME>
<HOST_IP>IP</HOST_IP>
<HOST_MAC>MAC</HOST_MAC>
<HOST_GUID></HOST_GUID>
<TARGET_KEY></TARGET_KEY>
<ASSET_VAL>
<AV_NAME xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">ROLE</AV_NAME>
<AV_DATA xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">Role</AV_DATA>
</ASSET_VAL>
</ASSET>
<STIG_INFO>
<STIG_TITLE>Windows 7 Security Technical Implementation Guide</STIG_TITLE>
</STIG_INFO>
<VULN>
<STIG_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-3008</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Group_Title</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>IPSec VPN is not configured as a tunnel type VPN.</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>SV-3008r1_rule</ATTRIBUTE_DATA>
</STIG_DATA>
</VULN>
<VULN>
<STIG_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-1234</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Group_Title</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>Some Text</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>Srrgs1_rule</ATTRIBUTE_DATA>
</STIG_DATA>
</VULN>
<VULN>
<STIG_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-5678</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Severity</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>medium</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Group_Title</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>Some Other Text</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>Rule_ID</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>dSrrdafgs1_rule</ATTRIBUTE_DATA>
</STIG_DATA>
</VULN>
</CHECKLIST>
【问题讨论】: