对于
perfomance reasons和
security reasons,Microsoft通常不允许 (又名
Document Type Definition).因此,您必须使用loadXML方法来设置.因此,在创建或导入文档后无法设置.
最重要的是,由于MSXML6中的默认安全设置,您通常无法导入具有的XML.因此,您必须禁用对象上的ProhibitDTD设置.
首先,让我们从所需的输出开始.
基于语法,我假设您正在使用C#并添加了对msxml6.dll的引用.以下代码将允许您创建这两个处理指令.
MSXML2.DOMDocument60 doc = new MSXML2.DOMDocument60();
// Disable validation when importing the XML
doc.validateOnParse = false;
// Enable the ability to import XML that contains
doc.setProperty("ProhibitDTD",false);
// Perform the import
doc.loadXML("
");// 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
doc.setProperty "ProhibitDTD",false
' Perform the import
doc.loadXML "
"' Display the imported XML
WScript.Echo objXML.xml
最后,这是用C编写的代码的副本.
#include
#pragma comment(lib,"comsuppw.lib")
#include
#pragma comment(lib,"msxml6.lib")
int main(int argc,char* argv[])
{
HRESULT hr = S_OK;
VARIANT_BOOL success = VARIANT_TRUE;
// IXMLDOMDocument2 is needed for setProperty
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
hr = doc->put_validateOnParse(VARIANT_FALSE);
// Enable the ability to import XML that contains
hr = doc->setProperty(_bstr_t(L"ProhibitDTD"),_variant_t(VARIANT_FALSE));
// Perform the import
hr = doc->loadXML(_bstr_t(L"
"),&success);// Retrieve the XML
_bstr_t output{};
hr = doc->get_xml(output.GetAddress());
// Display the imported XML
MessageBoxW(NULL,output,0);
}
// Cleanup COM
CoUninitialize();
}
return 0;
}