我正在尝试在PHP中提取XML文档的结构,而不扩展其中的实体。我知道实体通常在解析结构之前扩展,忽略这意味着XML可能格式不正确,但我正在解析可能不包括正常情况的XML片段XML文档头,因此将缺少实体声明。
理想情况下,当找到未声明的实体时,我想要回调,以便我自己处理它。 XMLReader和xml_parser似乎都无法关闭解析过程中产生的错误。
有没有简单的方法可以做到这一点,或者我需要依靠自己的解析器(这不会是一场灾难 - 我只需要解析一些标签,然后将所有文本保存在其中)
以下是官方DocBook指南第一章中的一些DocBook示例:
<chapter id="ch-gssgml">
<?dbhtml filename="ch01.html"?>
<chapterinfo>
<pubdate>$Date$</pubdate>
<releaseinfo>$Revision$</releaseinfo>
</chapterinfo>
<title>Getting Started<?lb?>with &SGML;/&XML;</title>
<para>
...
</para>
</chapter>
尝试解析它只是在看到&amp; SGML时就会死掉;实体。
答案 0 :(得分:1)
浏览完XMLReader之后:你试过这个:
XMLReader::setParserProperty与XMLReader::SUBST_ENTITIES结合使用?
没有尝试任何东西,看起来很有希望。应该像
一样工作XMLReader::setParserProperty ('SUBST_ENTITIES', 0);
似乎没有关于SUBST_ENTITIES将接受什么值的文档。
干杯,