[英]What libraries will parse a DTD using PHP
我需要使用PHP解析DTD,並希望有一個簡單的庫可以提供幫助。 每個DTD都有許多<!ENTITY...
和<!-- Comment...
元素,我需要對其進行操作。
請注意,我並不需要驗證對這些DTD什么,只是它們解析為數據文件本身。
我看過幾個選項:
James Clarke的SD ,這是最后的選擇,但我想避免構建/安裝/配置PHP外部代碼的復雜性。 在我的情況下,我不確定它是否可能。
PEAR有一個XML_DTD_Parser ,它需要安裝/配置PEAR和一些梨模塊,我也不確定是否可行,寧可避免。 有沒有人成功使用它? 編輯:我已經知道XML_DTD_Parser丟棄注釋,因此不是我需要的有效選項。
PHP XML類具有class_path_parser,這是另一個站點建議的,但它無法讀取ENTITY元素。 它似乎使用PHP的內置XML解析功能,它使用EXPAT。
PHP的DOMDocument將針對DTD進行驗證 ,因此必須能夠讀取它們,盡管我沒有看到如何直接進入DTD解析器。
PHP的標准XML解析器都不允許訪問常規實體*,很少有人可以訪問注釋。 PHP的內置XML Parser使用Expat ,但不公開完整的expat API; 特別是,無法設置實體的處理程序。 提交了一個PHP錯誤來添加它。
AFAICT,在DTD解析器中處理注釋和一般實體的唯一方法是編寫自己的解析器; 手動,或使用可用於php的詞法分析器和解析器生成器之一(例如PHP_LexerGenerator和PHP_ParserGenerator等)。
* PHP的expat包裝器(XML Parser)確實提供了對符號聲明的訪問,這些聲明聲明與通用實體類似但不相同。
我不知道這會有用......
如果我理解你在尋找什么,那么你正在尋找一種方法從DTD中提取和“節點”以便對它們采取行動。 很有意思。 這是我的大腦去的地方:
無論如何,我希望其中一些有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.