2017-02-27 180 views
0

私は文字列にXMLを持っています。 VBScriptでMsxml2.DOMDocument.6.0オブジェクトのLoadメソッドを使用してこのXMLを読み込もうとすると、常にfalseが返され、XMLは有効なXMLです。ここでなぜVBScriptでXMLを読み込めないのですか?

はXMLである:ここでは

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE cXML SYSTEM "http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd"> 
<cXML> 
    jsgdjgs 
</cXML> 

は、VBScriptコードです:

payloadXML = "<?xml version=""1.0"" encoding=""UTF-8""?><!DOCTYPE cXML SYSTEM ""http://xml.cxml.org/schemas/cXML/1.2.014/cXML.dtd""><cXML>jsgdjgs</cXML>" 
Set xmlDoc = Server.CreateObject("Msxml2.DOMDocument.6.0") 
xmlLoadSuccess = xmlDoc.load(payloadXML) 

If Not xmlLoadSuccess Then 
    Response.Write(xmlLoadSuccess) 
End If 

誰もが私が間違っているの何私を導いてもらえますか?同じ方法で、私はこのようなXMLをロードすることができます:

<abc> 
<firstName>jgg</firstName> 
<lastName>hfgyhg</lastName> 
</abc> 
+1

は、MSXML 6のためにあなたが明示的に外部リソースのDTDとロードを許可する必要があり、MSXML SDKおよび様々な第二レベルのプロパティのデフォルト値を確認してください。私は xmlDoc.setProperty "ProhibitDTD" を設定する必要が –

+0

@MartinHonnenおかげで、偽 xmlDoc.resolveExternals = falseを xmlDoc.validateOnParse = falseを –

答えて

0

XML文字列をロードしようとしています。 Load()メソッドは、ファイルからXMLを読み込むためのメソッドです。あなたはallow DTDsdisable validation during parsingに必要なDTDをロードするXMLのために、また

Set xmlDoc = Server.CreateObject("Msxml2.DOMDocument.6.0") 
xmlLoadSuccess = xmlDoc.LoadXML(payloadXML) 

:XML列についてLoadXML()メソッドを使用します。同期処理を有効にすることもお勧めします。

Set xmlDoc = Server.CreateObject("Msxml2.DOMDocument.6.0") 
xmlDoc.Async = False 
xmlDoc.SetProperty "ProhibitDTD", False 
xmlDoc.ValidateOnParse = False 
xmlLoadSuccess = xmlDoc.LoadXML(payloadXML) 

デバッグするとき、それは何が悪かったのかについての手がかりを提供していないので、LoadXML()メソッドの戻り値は、非常に有用ではないことに注意してください。より有用な情報を得るためにParseErrorプロパティを使用します。

If xmlDoc.ParseError <> 0 Then 
    WScript.Echo "0x" & Hex(xmlDoc.ParseError) & ": " & xmlDoc.ParseError.Reason 
    WScript.Quit 1 
End If 
+0

私も(LoadXMLを試してみてください)それでも偽すなわち同じ応答を取得します。 –

+0

ご協力いただきありがとうございます。 ** xmlDoc.setProperty "ProhibitDTD"、false xmlDoc.resolveExternals = false xmlDoc.validateOnParse = false **いくつかのプロパティを送信するだけです。 –

関連する問題