2013-02-14 122 views
0

我有一個xml文件,我想用VBScript(技術限制)讀取。以下是代碼和xml文件。如果沒有涉及DTD元素,但能夠讀取文件,但代碼不適用於具有DTD和xml樣式元素的文件。使用VB腳本讀取xml節點

代碼 -

Dim xmlDoc1:Set xmlDoc1 = CreateObject("MSXML2.DomDocument") 
xmlDoc1.async=False 
xmlDoc1.load "C:\ABC.xml" 
Dim xmlTCID:Set xmlTCID = xmlDoc1.selectNodes("//*") 
For nNodeCount = 0 To xmlTCID.length 
MsgBox(xmlTCID(nNodeCount).nodeName) 
Next  

ABC.xml -

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE RESULT SYSTEM "Result.dtd"[]> 
<?xml-stylesheet type="text/xsl" href="Result.xsl"?> 
<SUMMARY> 
<TITLE>Test</TITLE> 
</SUMMARY> 
<IDS> 
    <DATA> 
     <NAME>A</NAME> 
     <VALUE>PASS</VALUE> 
    </DATA> 
    <DATA> 
     <NAME>B</NAME> 
     <VALUE>PASS</VALUE> 
    </DATA 
    <DATA> 
     <NAME>C</NAME> 
     <VALUE>FAIL</VALUE> 
     </DATA 
    </IDS> 
    <IDS> 
    <DATA> 
     <NAME>A</NAME> 
     <VALUE>PASS</VALUE> 
    </DATA> 
    <DATA> 
     <NAME>B</NAME> 
     <VALUE>FAIL</VALUE> 
     </DATA 
    </IDS> 

注意 - 如果我避免 -

<!DOCTYPE RESULT SYSTEM "Result.dtd"[]> 
<?xml-stylesheet type="text/xsl" href="Result.xsl"?> 

上面的代碼能夠讀取的節點,但與上述在xml文件中有兩行,它給出了以下錯誤 -

enter image description here

要求 - 我需要爲每個IDS節點讀取帶有FAIL的最後DATA節點的名稱。

任何建議如怎樣做才能讓代碼甚至工作 -

<!DOCTYPE RESULT SYSTEM "Result.dtd"[]> 
<?xml-stylesheet type="text/xsl" href="Result.xsl"?> 

回答

0

因爲有你的XML問題 - 超過一個頂級元素,miising「>」 - 設置ProhibitDTD PropertyFalse不會解決你所有的任務。

+0

謝謝你試圖幫助Ekkehard。我試過這個,但沒有工作。 – anujin 2013-02-14 13:43:22

0
xmlDoc.validateOnParse=False 

爲我工作。