perfomance reasonsとsecurity reasonsについては、Microsoftは通常<!DOCTYPE>
(別名Document Type Definition)を許可しません。このため、メソッドを使用して<!DOCTYPE>
を設定する必要があります。したがって、文書が作成またはインポートされた後は設定できません。
デフォルトのセキュリティ設定がMSXML6であるため、通常は<!DOCTYPE>
のXMLをインポートできません。したがって、オブジェクトのProhibitDTD
設定を無効にする必要があります。
編集:あなたはHTML5 is not XMLを知っているはずです。また、<!DOCTYPE>
はconsidered optional for XHTML5です。
まず、目的の出力から始めましょう。
<!DOCTYPE html>
<html />
構文に基づいて、私はあなたがC#を使用していると仮定しているとmsxml6.dll
への参照を追加しました。次のコードでは、これら2つの処理命令を作成することができます。
MSXML2.DOMDocument60 doc = new MSXML2.DOMDocument60();
// Disable validation when importing the XML
doc.validateOnParse = false;
// Enable the ability to import XML that contains <!DOCTYPE>
doc.setProperty("ProhibitDTD", false);
// Perform the import
doc.loadXML("<!DOCTYPE html><html />");
// Display the imported XML
Console.WriteLine(doc.xml);
ここにはVBScriptで書かれたコードのコピーもあります。
Set doc = CreateObject("MSXML2.DOMDocument.6.0")
' Disable validation when importing the XML
doc.validateOnParse = False
' Enable the ability to import XML that contains <!DOCTYPE>
doc.setProperty "ProhibitDTD", false
' Perform the import
doc.loadXML "<!DOCTYPE html><html />"
' Display the imported XML
WScript.Echo objXML.xml
最後に、C++で書かれたコードのコピーです。
#include <stdio.h>
#include <tchar.h>
#include <msxml6.h>
#import <msxml6.dll>
#pragma comment(lib, "msxml6.lib")
int _tmain(int argc, _TCHAR* argv[])
{
HRESULT hr;
// IXMLDOMDocument2 is needed for setProperty
MSXML2::IXMLDOMDocument2 *doc;
// Initialize COM
hr = CoInitialize(NULL);
if (SUCCEEDED(hr))
{
// Create the object
hr = CoCreateInstance(CLSID_DOMDocument60, NULL, CLSCTX_INPROC_SERVER, IID_IXMLDOMDocument2, (void**)&doc);
if (SUCCEEDED(hr))
{
// Disable validation when importing the XML
doc->validateOnParse = VARIANT_FALSE;
// Enable the ability to import XML that contains <!DOCTYPE>
doc->setProperty(_bstr_t(L"ProhibitDTD"), VARIANT_FALSE);
// Perform the import
doc->loadXML(_bstr_t(L"<!DOCTYPE html><html />"));
// Display the imported XML
MessageBox(NULL, doc->xml, NULL, 0);
}
// Cleanup COM
CoUninitialize();
}
return 0;
}
あなたが使用することができます 'loadXML( "の<?xml version =" 1.0" エンコード= "UTF-8"?><!DOCTYPEのroot_elementシステム "DTD_location"> 」)'をし、そこから行きます... –
manuell