1
我的感覺真的誤會與XML DTD的:我包括衝突與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(): 文件:/// C:/wamp/www/forge/Path/datas.xml:2: 分析器錯誤:開始標記:無效的元素名稱
感謝您的幫幫我 !
好的,謝謝你的精確度。我一直在互聯網上搜索一個正確的方法來使用XML包括蛔蟲。簡而言之,我已經有了一個樹狀的劇目和XML文件。在每個劇目中,我都需要一個文件,其中包括他的劇目的所有文件,遞歸地。如果我找不到解決方案,我將使用PHP來完成此任務。 – 2013-05-05 18:50:08
你看過XInclude了嗎? – 2013-05-05 20:01:06
太棒了!謝謝 !我想知道爲什麼我的書沒有提到它,但這是因爲它太舊了!無論如何,這本書是一本非常棒的書,但現在我會密切關注「新聞」,或者購買更新的書。我使用類DOMDocument來完成PHP中的包含,因爲它似乎是SimpleXML無法處理它。再次感謝你的幫助。真棒社區。 – 2013-05-05 23:27:14