Como resolver uma referência de entidade XML declarada internamente usando NSXMLParser
Eu tenho um arquivo XML que usa entidades declaradas internamente. Por exemplo:
<?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>
...
Usando a classe NSXMLParser, como posso resolvermy_symbol
referência de entidade?
Da experimentação, oparser:foundInternalEntityDeclarationWithName:value:
O método delegado será chamado para omy_symbol
declaração de entidade, com valor"my symbol value"
. Então, quando omy_next_element
o elemento é alcançado,NSXMLParser
vai ligar para oparser:didStartElement:namespaceURI:qualifiedName:attributes:
delegate method.
Antesparser:didEndElement:namespaceURI:qualifiedName:
é chamado para</my_next_element>
, aparser:foundCharacters:
O método delegate será chamado duas vezes com as strings:
"foo"
"bar"
omy_symbol
referência de entidade é ignorada. O que é necessário para que a referência da entidade seja resolvida?
EDITAR:
Removendo oENTITY
declaração demy_symbol
da DTD resultará em umNSXMLParserUndeclaredEntityError
. Isto sugere que quando a declaração de entidade está presente, e então referenciada em<my_next_element>
, está sendo notado. Por algum motivo, ele não está sendo resolvido para a string que representa.
Também se&
é usado dentro de um elemento, o analisador irá resolvê-lo corretamente"&"
e isso é passado como a string quando oparser:foundCharacters:
O método delegado é chamado.