проблема в XML-парсере, когда дополнительная цитата - PullRequest
1 голос
/ 13 июля 2011

Я написал синтаксический анализатор xml, который успешно анализирует xml-файл, заданный как input. Но иногда входной файл, который передается для синтаксического анализатора may, имеет двойную кавычку в свойстве text, из-за чего мой синтаксический анализатор падает.

Например

<tag  myprop=" this has a extra quote here like " some times" >  </tag>

Я знаю тег, который может иметь / не иметь дополнительную цитату. Я использую синтаксический анализатор dom.


Как я могу справиться с этой ситуацией?

Ответы [ 4 ]

1 голос
/ 13 июля 2011

Вы не сможете использовать анализатор XML, пока не получите настоящий XML. То, что у вас есть, недопустимо (т.е. не XML). Заранее следует избегать кавычки внутри атрибута.

Экранированный код будет выглядеть так:

<tag  myprop=" this has a extra quote here like &quot; some times" >  </tag>

Что касается того, почему ваш синтаксический анализатор падает, ну, существует десятков XML-библиотек , существующих - вы рассматривали какие-либо из них? Я лично ожидал бы получить ParseException или что-то в этом роде.

1 голос
/ 13 июля 2011

Не знаю точно, но я думаю, что это просто недопустимый XML, и поэтому ваш синтаксический анализатор должен завершиться с ошибкой (а не сбоить), но я не думаю, что он должен успешно проанализировать такой файл.

0 голосов
/ 13 июля 2011

см. Спецификацию XML 1.0, раздел 2.4:
http://www.w3.org/TR/xml/#attdecls

Чтобы значения атрибутов могли содержать как одинарные, так и двойные кавычки, символ апострофа или одинарной кавычки (') может бытьобозначается как "& apos;", а символ двойных кавычек (") - как" ";". "

, поэтому, поскольку это недопустимый XML, ваш синтаксический анализатор не должен пытаться обработать недопустимыйзначение, просто нужно выдать ошибку.

0 голосов
/ 13 июля 2011

Вы не можете. Это недопустимый XML, поэтому анализатор DOM не сможет выполнить синтаксический анализ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...