我有一个我想用VBScript读取的xml文件(技术限制)。下面是代码和xml文件。如果没有涉及DTD元素,我能够读取该文件,但代码不适用于具有DTD和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文件中有上面的两行,它会给出以下错误 -
要求 - 我需要为每个IDS节点读取具有FAIL的最后一个DATA节点的名称。
任何建议如何使代码工作,即使使用 -
<!DOCTYPE RESULT SYSTEM "Result.dtd"[]>
<?xml-stylesheet type="text/xsl" href="Result.xsl"?>
答案 0 :(得分:0)
由于您的XML存在问题 - 多个顶级元素,缺少“&gt;” - 将ProhibitDTD Property设置为False
并不能解决您的所有任务。
答案 1 :(得分:0)
xmlDoc.validateOnParse=False
为我工作。