WebServiceの関数を使用しているiPadプロジェクトで作業しています。 Webサービスの接続、データなどを処理します。しかし、TouchXMLを使用してSOAPを解析することはできません。 xmlからノードを取得すると、常に0の長さが返されます。iOS SDK(iPad)でTouchXMLを使用してSOAP結果を解析する
出力のxml:
<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
<LogOnResponse xmlns="http://coreservices.org/v1">
<LogOnResult>
<Id>1c0e9ad0-a3be-4cd0-8f0d-0616a63a4e28</Id>
<userId>2</userId>
<user>
<ID>2
<Name>Beheerder
<emailAddress />
<cultureName>nl-NL</cultureName>
</user>
</LogOnResult>
</LogOnResponse>
</soap:Body>
</soap:Envelope>
パーサコード:
NSData *aData = [[NSData alloc] initWithBytes:[webData mutableBytes]
length:[webData length]];
NSString *xmlData = [[NSString alloc] initWithData:aData
encoding:NSASCIIStringEncoding];
NSLog(@"%@", xmlData);
[xmlData release];
CXMLDocument *domUserIdentity = [[[CXMLDocument alloc] initWithData:aData
options:0
error:nil]
autorelease];
[aData release];
NSArray *nodesList = [domUserIdentity nodesForXPath:@"//LogOnResult" error:nil]; // 0 length
for (CXMLElement *resultElement in nodesList) {
for (int counter = 0; counter
NSString *elemName = [[resultElement childAtIndex:counter] name];
NSString * elemValue = [[[resultElement childAtIndex:counter]
stringValue]
stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];
[elemName release];
[elemValue release];
}
}
[nodesList release];
私が間違ってやったものを任意のアイデア?
ありがとうございます。
Inoel
NSXMLDocumentはココア特有のものですか?私はiOS SDKでこれを使用できるとは思わない。私はこれを使うライブラリもフレームワークも見つけられません。 – Inoel
KissXMLライブラリ(http://code.google.com/p/kissxml/)は、iOSのNSXMLDocumentクラスを複製し(いくつかの機能を追加しています)、遅いことに気付きました。私はライブラリに関連していませんが、それは私自身のコードの多くで非常に役立ちます! –