Tengo un archivo XML que usa entidades declaradas internamente. Por ejemplo:Cómo resolver una referencia de entidad XML declarada internamente utilizando 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>
...
Utilización de la clase NSXMLParser, cómo soy capaz de resolver la referencia my_symbol
entidad?
De la experimentación, se llamará al método de delegado parser:foundInternalEntityDeclarationWithName:value:
para la declaración de entidad my_symbol
, con el valor "my symbol value"
. Luego, cuando se alcanza el elemento my_next_element
, NSXMLParser
llamará al método delegado parser:didStartElement:namespaceURI:qualifiedName:attributes:
.
Antes parser:didEndElement:namespaceURI:qualifiedName:
se llama para </my_next_element>
, el método parser:foundCharacters:
delegado se llamará dos veces con las cadenas: se ignora
"foo"
"bar"
La referencia my_symbol
entidad. ¿Qué se requiere para que se resuelva la referencia de la entidad?
EDIT:
Extracción de la declaración de ENTITY
my_symbol
de la DTD se traducirá en un NSXMLParserUndeclaredEntityError
. Esto sugiere que cuando la declaración de la entidad está presente, y luego se hace referencia en <my_next_element>
, se está notando. Por alguna razón, no se está resolviendo con la cadena que representa.
Además, si &
se utiliza dentro de un elemento, el analizador resolverá correctamente a "&"
y esto se pasa como la cuerda cuando se llama al método parser:foundCharacters:
delegado.
Estoy topando con este problema ahora. ¿Lo resolviste? –
¿Puedes encontrarlo con [XPath] (http://en.wikipedia.org/wiki/XPath)? –
Realicé una consulta XPath en 'my_element' y tampoco se resolvieron tanto "foo" como "bar". ¿Es correcto hacer referencia a las entidades declaradas internamente como lo hice? –