我试图弄清楚如何运行查询以获取下面xml中的每个CCI_REF属性数据,并将每个VULN标记下的多个值(CCI-000193,CCI-000192等)输出到单个窗口中。如您所见,一些VULN标签只有一个CCI_REF,有些可能有多个。我希望输出只显示属于其自己的父VULN标记的CCI_REF值。
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<CHECKLIST>
<STIGS>
<iSTIG>
<VULN>
<STIG_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-1070</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>CCI_REF</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>CCI-000192</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>CCI_REF</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>CCI-000193</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>CCI_REF</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>CCI-000194</ATTRIBUTE_DATA>
</STIG_DATA>
</VULN>
<VULN>
<STIG_DATA>
<VULN_ATTRIBUTE>Vuln_Num</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>V-1071</ATTRIBUTE_DATA>
</STIG_DATA>
<STIG_DATA>
<VULN_ATTRIBUTE>CCI_REF</VULN_ATTRIBUTE>
<ATTRIBUTE_DATA>CCI-000194</ATTRIBUTE_DATA>
</STIG_DATA>
</VULN>
</iSTIG>
</STIGS>
</CHECKLIST>
以下是我到目前为止提出的示例代码。它将循环并显示CCI-000XXX的每个实例,但是单独而不是仅在每个VULN标记的1个输出窗口中。所以wscript.echo将发送3个弹出窗口而不是单个窗口,列出所有3个值。有谁知道如何更改代码以获得我需要的东西?
Set xmlDoc = _
CreateObject("Microsoft.XMLDOM")
xmlDoc.setProperty "SelectionLanguage", "XPath"
xmlDoc.Async = "False"
xmlDoc.Load("C:\Test\test.xml")
strQuery = "/CHECKLIST/STIGS/iSTIG/VULN/STIG_DATA [VULN_ATTRIBUTE='CCI_REF'] /ATTRIBUTE_DATA"
Set CCI_Ref=xmlDoc.selectNodes (strQuery)
For Each objNode in CCI_Ref
wscript.echo objNode.text
Next