2013-02-14 134 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 

为我工作。