10

私はこれに遭遇したばかりで、ドキュメントから明確な答えを得ることができなかったようです。

HTTPS接続を介してXMLを取得しています。私はあらゆる種類の認証などを行っているので、これを適切にスレッド化して処理する一連のクラスがあります。結果は、次のようなNSStringになります。

<response>
//some XML formatted test
</response>

これは、これが単なるNSStringではなく実際のXMLであることを示すencoding = "UTF-8" indent = "yes" method="xml"またはその他のヘッダーブロックがないことを意味します。

[NSXMLParser initWithData:NSData]を使用してパーサーを構築すると思いますが、xml形式のテキストのNSStringを、NSXMLParserが理解して解析できる適切なNSDataオブジェクトにフォーマットまたはキャストするにはどうすればよいですか?

それが理にかなっていることを願っています、与えられた助けに感謝します:)

4

3 に答える 3

31

dataUsingEncodingメソッドを使用して、文字列をNSDataオブジェクトに変換できます。

NSData *data = [myString dataUsingEncoding:NSUTF8StringEncoding];

次に、これをNSXMLParserにフィードできます。

于 2009-12-03T16:17:58.920 に答える
2

ヘッダーはオプションですが、必要に応じて適切なヘッダーを自分で挿入できます。

NSString *header = @"<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
NSString *xml = [NSString stringWithFormat:@"%@\n%@", header, response);
NSData *data = [xml dataUsingEncoding:NSUTF8StringEncoding];
NSXMLParser *praser = [NSXMLParser initWithData:data];
于 2009-12-03T16:19:39.230 に答える
1

データが手に入る頃NSXMLParserには、XMLであることがほとんど期待されています;-)

このコンテキストでは、処理命令ヘッダーはオプションであると確信しています。NSStringに入る方法はNSData、(を使用して)エンコーディングを指示しdataUsingEncoding:ます。

(編集:エンコーディング列挙型を探していましたが、Philippe Leybaertが私を打ち負かしましたが、とにかくここで繰り返すと、次のようになります[nsString dataUsingEncoding:NSUTF8StringEncoding]:)

私はNSString以前、この方法でXMLを問題なく渡しました。

この質問自体に固有のものではありませんが、一般的にiPhoneコンテキストでのXML解析に関しては、私のこのブログエントリも興味深いと思うかもしれません。

于 2009-12-03T16:18:17.627 に答える