2012-04-13 8 views
1

Das Kommentarfeld einer XML-Datenbank, die ich gerade lese und schreibe, wird als Attribut eines NSXMLEelements gespeichert. Ein Eintrag enthält ein Zeilenvorschubzeichen (0x0a). Diese werden von einem Nicht-NSXML-Encoder im Dokument, das ich analysiere, als 
 codiert und von NSXML korrekt analysiert. Sie führen dazu, dass der NSString den Unicode-Wert 0x0a 0x00 im Speicher enthält (intel-Byte-Reihenfolge).Encoding Line Feed Zeichen im Wert eines NSXMLElement-Attributs

Zum Beispiel:

<INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test &amp; More Test &#xA;&#xA;After the Line Feeds"</INFO> 

Wenn diese NSString Schreiben wieder aus, wenn der Wert eines NSXMLElement des Attributs, es nicht zurück und die Ergebnisse in der folgenden ausgegeben zu der XML-Datei verschlüsselt erhalten:

<INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test &amp; More Test 

After the Line Feeds"</INFO> 

die natürlich beim erneuten Lesen der Datei nicht richtig analysiert wird.

Es scheint wie Knoten Optionen wie NSXMLNodePreserveCharacterReferences oder NSXMLNodePreserveEntities sollte der Weg sein, aber es scheint nicht in irgendeiner Weise zu helfen.

Ich muss das Offensichtliche vermissen, aber ich habe den ganzen Tag festgefahren.

+0

Haben Sie diese Optionen beim Lesen oder Schreiben verwendet? –

+0

Ich hatte zuerst keine Optionen (abgesehen von NSXMLNodePrettyPrint auf das gesamte Dokument beim Schreiben). –

+0

Ich habe 'NSXMLNodePrettyPrint' für das gesamte Dokument und' NSXMLNodePreserveCharacterReferences | NSXMLNodePreserveEntities "im Kommentarattributknoten beim Schreiben. Ich habe keine Optionen beim Lesen. Verwenden Sie einfach '[[anElement attributeForName: @" Comments "] stringValue]' auf dem Knoten. –

Antwort

1

Bei Apple überprüft, ist dies ein bekanntes Problem mit NSXMLDocument und es wurde jetzt als Fehlerbericht archiviert.

Vorgeschlagene Problemumgehung ist die Verwendung von libxml2 vorläufig.

Ich werde einen Kommentar posten, wenn ich das in einer zukünftigen Version behoben sehe.

+0

Für zukünftige Referenz wird dies derzeit von Apple als rdar: // Problem/7388696 verfolgt –

Verwandte Themen