Auflösen eines intern deklarierten XML-Entitätsverweises mit NSXMLParser
Ich habe eine XML-Datei, die intern deklarierte Entitäten verwendet. Zum Beispiel:
<?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>
...
Wie kann ich mithilfe der NSXMLParser-Klasse das Problem beheben?my_symbol
Entitätsreferenz?
Aus dem Experimentieren derparser:foundInternalEntityDeclarationWithName:value:
Delegate-Methode wird für die aufgerufenmy_symbol
Entitätsdeklaration mit Wert"my symbol value"
. Dann, wenn diemy_next_element
Element ist erreicht,NSXMLParser
werde das anrufenparser:didStartElement:namespaceURI:qualifiedName:attributes:
delegieren Methode.
Vorparser:didEndElement:namespaceURI:qualifiedName:
ist angesagt</my_next_element>
, dasparser:foundCharacters:
Die delegate-Methode wird zweimal mit den folgenden Zeichenfolgen aufgerufen:
"foo"
"bar"
Dasmy_symbol
Entitätsreferenz wird ignoriert. Was ist erforderlich, damit die Entitätsreferenz aufgelöst wird?
BEARBEITEN:
Entferne denENTITY
Erklärung vonmy_symbol
aus der DTD führt zu einemNSXMLParserUndeclaredEntityError
. Dies deutet darauf hin, dass die Entitätsdeklaration vorhanden ist und dann in referenziert wird<my_next_element>
Es wird bemerkt. Aus irgendeinem Grund wird es einfach nicht in die Zeichenfolge aufgelöst, die es darstellt.
Auch wenn&
Wird es in einem Element verwendet, wird es vom Parser korrekt aufgelöst"&"
und dies wird als String übergeben, wenn dieparser:foundCharacters:
Die Delegate-Methode wird aufgerufen.