0

次のXML文字列は、禁止されている文字が原因でNSXMLParser(XCode / iOS)によって解析されないことがわかりました。エスケープが必要な場合、XMLパーサーに送信する前にXML文字列をどのようにエスケープする必要がありますか。

@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
 <Elem xmlns=\"Sample\"><Text Text=\"some text <name@somcompany.com> \"></Text></Elem>";

@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
 <Elem xmlns=\"Sample\"><Text Text=\"some text \"quoted text\" \"></Text></Elem>";

どちらも次のエラーを生成します。

Error Domain=NSXMLParserErrorDomain Code=38 "The operation couldn’t be completed.
(NSXMLParserErrorDomain error 38.)

これはエラーなしで機能します:

@"<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<Elem xmlns=\"Sample\"><Text Text=\"some text \'quoted text\' \"></Text></Elem>";

ありがとう。

4

1 に答える 1

0

パーセントエンコードで文字をエスケープしてみることができます。

str = @" \">";
str = [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

その後、あなたはそれらを回復することができます

str = [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

しかし、XMLを正しく作成しているのか、そもそもXMLを作成しているのかはわかりません。

編集

ソース(そのXMLを生成する人)は正しくないため、テキストをエスケープする必要があります。パーサーではこれを行うことはできません。

于 2013-02-24T01:21:42.423 に答える