在不扩展PHP实体的情况下解析XML结构

时间:2009-06-15 21:39:38

标签: php xml parsing xmlreader entities

我正在尝试在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时就会死掉;实体。

1 个答案:

答案 0 :(得分:1)

浏览完XMLReader之后:你试过这个:

XMLReader::setParserPropertyXMLReader::SUBST_ENTITIES结合使用?

没有尝试任何东西,看起来很有希望。应该像

一样工作
XMLReader::setParserProperty ('SUBST_ENTITIES', 0);

似乎没有关于SUBST_ENTITIES将接受什么值的文档。

干杯,