1

我试图在 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>

一旦看到 &SGML; ,试图解析它就会死掉。实体。

4

1 回答 1

1

在浏览了 XMLReader 之后:你试过这个:

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

什么都没试过,只是看起来很有希望。应该像

XMLReader::setParserProperty ('SUBST_ENTITIES', 0);

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

干杯,

于 2009-06-25T10:35:33.523 回答