0

VBScript (テクノロジの制限) を使用して読み取りたい xml ファイルがあります。以下はコードとxmlファイルです。DTD 要素が含まれていない場合はファイルを読み取ることができますが、DTD および xml-style 要素を含むファイルではコードが機能しません。

コード-

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 ファイルに上記の 2 行があると、以下のエラーが発生します -

ここに画像の説明を入力

要件 - IDS ノードごとに、最後の DATA ノードの名前を FAIL で読み取る必要があります。

コードを動作させるために何をすべきかについての提案 -

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

2 に答える 2

0

XML に問題があるため (複数の最上位要素、「>」の誤用)、ProhibitDTD プロパティを に設定してFalseも、すべてのタスクが解決されるわけではありません。

于 2013-02-14T12:19:23.913 に答える
0
xmlDoc.validateOnParse=False

私のために働いた。

于 2013-02-14T13:43:56.993 に答える