我正在尝试解析VB Script中的XML树,但我无法提取出我想要的值。我想提取名称值(例如CHNG_REQT_NB
和CHNG_REQT_DTL_CO
),但是使用下面的代码,我只能打印出“列”和值与每个相关联,例如,使用下面的代码和XML,它将打印如下:
column 13389 column /* NOTES */ 1) CR#145: New Code Table
我希望将其打印为
CHNG_REQT_NB 13389 CHNG_REQT_DTL_CO /* NOTES */ 1) CR#145: New Code Table
有人可以指出我哪里出错了吗?以下是我的代码和XML示例。
Set objXMLDoc = CreateObject("Microsoft.XMLDOM")
objXMLDoc.Async = False
objXMLDoc.Load("result.xml")
Set Root = objXMLDoc.DocumentElement
Set rowList = Root.GetElementsByTagName("row")
For Each row In rowList
handleNode(row)
Next
Sub handleNode(row)
For Each elem In row.ChildNodes
WScript.Echo elem.TagName
WScript.Echo elem.Text
Next
End Sub
<?xml version="1.0" encoding="UTF-8"?>
<resultsets>
<resultset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<row>
<column name="CHNG_REQT_NB">13389</column>
<column name="CHNG_REQT_DTL_CO">/* NOTES */ 1) CR#145: New Code Table</column>
</row>
</resultset>
</resultsets>
答案 0 :(得分:1)
使用XPath,不要乱用子节点。
Set xml = CreateObject("Msxml2.DOMDocument")
xml.Async = "False"
xml.Load("45694693.xml")
if( xml.parseError ) then
WScript.Echo xml.parseError.reason & " line: " & xml.parseError.line
end if
for each ndColumn in xml.selectNodes( "//column" )
WScript.Echo ndColumn.getAttribute( "name" ) + vbCrLf + ndColumn.text
next
WScript.Echo strReturn
答案 1 :(得分:1)
您需要获取节点的plot()
属性的值,而不是节点名称。
更改
name
到
For Each elem In row.ChildNodes
WScript.Echo elem.TagName
WScript.Echo elem.Text
Next
并且代码将执行您想要的操作。