[英]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.