У меня есть XML-файл, который использует внутренне объявленные объекты. Например:Как разрешить внутренне объявленную ссылку на сущность XML с помощью NSXMLParser
<?xml version="1.0" encoding="UTF-8"?>
...
<!ENTITY my_symbol "my symbol value">
...
<my_element>
<my_next_element>foo&my_symbol;bar</my_next_element>
</my_element>
...
Использование класса NSXMLParser, как я в состоянии разрешить ссылку my_symbol
лица?
Из эксперимента, метод делегата parser:foundInternalEntityDeclarationWithName:value:
вызывается для объявления объекта my_symbol
со значением "my symbol value"
. Затем, когда достигнут элемент my_next_element
, NSXMLParser
вызовет метод делегата parser:didStartElement:namespaceURI:qualifiedName:attributes:
.
Перед parser:didEndElement:namespaceURI:qualifiedName:
вызываются для </my_next_element>
, метод parser:foundCharacters:
делегата будет вызываться дважды со строками:
"foo"
"bar"
Ссылка my_symbol
объекта игнорируются. Что требуется для того, чтобы ссылка на объект была разрешена?
EDIT:
Удаление ENTITY
декларации my_symbol
от DTD приведет к NSXMLParserUndeclaredEntityError
. Это говорит о том, что, когда присутствует объявление объекта, а затем ссылается на <my_next_element>
, оно замечается. По какой-то причине это просто не разрешается для строки, которую она представляет.
Кроме того, если в элементе используется &
, синтаксический анализатор будет корректно разрешать его до "&"
, и он передается как строка при вызове метода делегата parser:foundCharacters:
.
Сейчас я сталкиваюсь с этой проблемой. Вы решили это? –
вы можете найти его с помощью [XPath] (http://en.wikipedia.org/wiki/XPath)? –
Я выполнил запрос XPath на «my_element», и оба «foo» и «bar» также не были разрешены. Правильно ли указывать внутренне объявленные объекты, как я это сделал? –