我感觉真的误解了带有 XML 的 DTD:
在一个 XML 文件(它有一个 doctype)中,我在一个实体中包含了另一个 XML 文件(它也有一个 doctype)。我的解析器对此很生气。
我知道问题出在 Doctype 上,因为如果我删除它,一切都会好起来的。但我可以不用它,我需要一个最终的 XML 文件,方法是包含其他 XML 文件。
这是 /datas.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE datas [
<!ENTITY Path_datas SYSTEM "Path/datas.xml" >
]>
<datas>
&Path_datas;
</datas>
这是 /Path/datas.xml :
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE oolodatas [
<!ENTITY Local_DefaultProject_Box_datas SYSTEM "Local/DefaultProject/Box/datas.xml" >
]>
<datas>
<box>
LOL
</box>
</datas>
所以在一个 PHP 文件中我这样做:
$datas = simplexml_load_file(realpath('maforge/datas/datas.xml'), NULL, LIBXML_NOENT);
var_dump($datas->asXML());
这里是我得到的错误:
SCREAM:(!)忽略错误抑制警告:simplexml_load_file():file:///C:/wamp/www/forge/Path/datas.xml:2:解析器错误:StartTag:无效元素名称
谢谢你的帮助!