当我尝试使用 DTD 读取 XML 文档(eagle 文件)时,出现错误:
项目 xx 引发异常类 EDOMParserError 并带有消息“禁止 DTD”
XML 标头如下所示:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE eagle SYSTEM "eagle.dtd">
如果我删除第二行...
<!DOCTYPE eagle SYSTEM "eagle.dtd">
...一切正常。
经过一番谷歌搜索后,似乎 MSXML 解析器有一个名为“prohibitDTD”的选项默认设置为true(在早期版本中为 false)。
但是,似乎无法从 TXMLDocument 类将此选项设置为 false。一种解决方案似乎是重新编译 .pas 库或使用 CoCreateInstance() 自己创建接口。
我在那里看到的所有示例都在 Delphi 中,我很难将这些示例转换为 C++ Builder。
有谁知道如何使用 C++ Builder XE2 读取 DTD XML 文档?
我的示例代码...
#include <xmldoc.hpp>
_di_IXMLNode XMLObject;
TXMLDocument *XMLDocument = new TXMLDocument(this);
XMLDocument->LoadFromFile(fileName); // <----- Exception EDOMParserError
XMLObject = XMLDocument->DocumentElement;
谢谢...