如何在VBScript中解析此XML树?

时间:2017-08-15 14:14:17

标签: xml vbscript

我正在尝试解析VB Script中的XML树,但我无法提取出我想要的值。我想提取名称值(例如CHNG_REQT_NBCHNG_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>

2 个答案:

答案 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

并且代码将执行您想要的操作。