1

The comment field of an XML database I'm reading and writing is stored as the attribute of an NSXMLElement. One entry contains a line feed (0x0a) character. These are encoded by a non NSXML encoder in the document I'm parsing as 
 and get parsed correctly by NSXML. They result in the NSString containing the unicode value 0x0a 0x00 in memory (intel byte ordering).

For example:

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

When writing this NSString back out as the value of an NSXMLElement's attribute, it does not get encoded back and results in the following being output to the xml file:

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

After the Line Feeds"</INFO>

which of course does not get parsed properly upon re-reading the file again.

It seems like node options like NSXMLNodePreserveCharacterReferences or NSXMLNodePreserveEntities should be the way to go but it doesn't seem to help in any way.

I must be missing the obvious but I've been stuck on this all day.

4

2 に答える 2

1

Appleに確認したところ、これはNSXMLDocumentの既知の問題であり、バグレポートとして提出されています。

推奨される回避策には、当面はlibxml2を使用することが含まれます。

これが将来のリリースで修正されるのを見たら、コメントを投稿します。

于 2012-11-13T16:42:35.353 に答える
-1

Appleは言う:

名前に「Preserve」が含まれるオプションは、XMLの外部ソースが解析される場合にのみ適用できます。プログラムで作成されたノードオブジェクトには影響しません。NSXMLDocumentの初期化および出力メソッドでは、他のオプションが使用されます。詳細については、NSXMLDocumentのリファレンスドキュメントを参照してください。`私には機能しません。バグだと思います。

KissXMLでこの問題を解決しました。

于 2018-09-21T08:08:15.333 に答える