我目前正在重寫一個PHP類,試圖將XML文件拆分爲更小的塊,以使用XMLReader和XMLWriter而不是當前的基本文件系統和正則表達式方法。PHP XMLReader,獲取版本和編碼
但是,我無法弄清楚如何從XML序言中獲取版本,編碼和獨立標誌。
我測試的XML文件的開頭是這樣的:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE fakedoctype SYSTEM "fake_doc_type.dtd">
<!--
This is a comment, it's here to try and get the parser to break in some way
-->
<root attribute="value" otherattribute="othervalue">
我可以打開它沒關係與讀寫器,並通過文件具有讀取移動(),未來()等,但我可以」 t似乎得到了<?xml ... ?>
中的任何東西。我能夠訪問的第一件事是僞造的DOCTYPE。
我的測試代碼如下:
$a = new XMLReader();
var_dump ($a -> open ('/path/to/test/file.xml')) // true
var_dump ($a -> nodeType); // 0
var_dump ($a -> name); // ""
var_dump ($a -> readOuterXML()); // ''
var_dump ($a -> read()); // true
var_dump ($a -> nodeType); // 10
var_dump ($a -> readOuterXML()); // <!DOCTYPE fakedoctype SYSTEM "fake_doc_type.dtd">
當然,我可能只是總是假設XML 1.0,UTF8編碼和獨立= YES,但對於正確性的緣故,我真的相當能抓住會源數據源中的值是什麼,並在生成分割文件時使用它們。
有關XMLReader和XMLwriter的文檔似乎非常差,所以我很有機會錯過了文檔中的某些內容。有沒有人知道在這種情況下要做什麼?
是的,文檔很差。我只能找到非常一般的信息,_「重要的是要注意,在內部,libxml使用UTF-8編碼,因此,檢索內容的編碼將始終採用UTF-8編碼。」 - - 但沒辦法檢索有關原始文檔的信息。如果沒有其他解決方案出現,我可能會單獨閱讀文檔的第一行,並使用RegExp手動解析該信息(如果它很重要)。 – CBroe 2013-03-18 13:37:40