Разбор XML-структуры без расширения сущностей в PHP - PullRequest
1 голос
/ 16 июня 2009

Я пытаюсь извлечь структуру XML-документа в PHP без расширения сущностей внутри. Мне известно, что сущности обычно расширяются за до анализа структуры, и что игнорирование этого означает, что 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; юридическое лицо.

1 Ответ

1 голос
/ 25 июня 2009

После небольшого просмотра XMLReader: вы пробовали это:

XMLReader :: setParserProperty в сочетании с XMLReader :: SUBST_ENTITIES ?

Ничего не пробовал, просто выглядит многообещающе. Должен работать как

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

Кажется, нет документации о том, какие значения SUBST_ENTITIES будет принимать.

Приветствия

...