У меня есть файл XML, в котором используются внутренне объявленные сущности. Например:
<?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
игнорируется. Что требуется для разрешения ссылки на сущность?
РЕДАКТИРОВАТЬ:
Удаление ENTITY
объявления my_symbol
из DTD приведет к созданию NSXMLParserUndeclaredEntityError
. Это говорит о том, что когда объявление объекта присутствует, а затем упоминается в <my_next_element>
, оно замечается. По какой-то причине он просто не разрешается в строку, которую он представляет.
Кроме того, если внутри элемента используется &
, синтаксический анализатор правильно разрешит его в "&"
, и это будет передано в виде строки при вызове метода делегата parser:foundCharacters:
.