2017-08-15 9 views
0

私はVBスクリプトでXMLツリーを解析しようとしていますが、私が望む値を引き出すことができません。私は名前値(例:CHNG_REQT_NBCHNG_REQT_DTL_CO)を取得したいと思っていますが、以下のコードでは、 "column"とそれぞれに関連付けられた値を出力することしかできません。以下のコードやXML、それは以下のようにプリントアウトします:VBScriptでこの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

'WScript.Echo elem.tagName' - >' WScript.Echo elem.GetAttribute( "name") ' –

+0

それでした!私はそれを試みたが、私は間違った場所や何かでそれを試したに違いない。それを答えとして掲示し、私はそれを受け入れる。 – johns4ta

答えて

1

あなたはノードのname属性の値ではなくノード名を取得する必要があります。

For Each elem In row.ChildNodes 
    WScript.Echo elem.GetAttribute("name") 
    WScript.Echo elem.Text 
Next

変更

For Each elem In row.ChildNodes 
    WScript.Echo elem.TagName 
    WScript.Echo elem.Text 
Next

とコードは、あなたがやりたいだろう。

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 
関連する問題