0

NSXMLParser を使用して xml パッケージを分析していますが、パッケージ テキスト内に &apos が含まれています。

xmlParser に対して次のように定義しています。

[xmlParser setShouldResolveExternalEntities: YES];

次のメソッドは呼び出されません

- (void)parser:(NSXMLParser *)parser foundExternalEntityDeclarationWithName:(NSString *)entityName publicID:(NSString *)publicID systemID:(NSString *)systemID

&apos の前のフィールド内のテキストは、パーサーによって考慮されません。

これを解決する方法を探していますが、アイデアはありますか???

前もってありがとうアレックス

添付された XML パッケージ部分:

<?xml version="1.0" encoding="ISO-8859-1"?><SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="urn:appwsdl"><SOAP-ENV:Body><ns1:getObjects2Response xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/"><return xsi:type="tns:objectsResult"><totalRecipes xsi:type="xsd:string">1574</totalObjects><Objects xsi:type="tns:Item"><id xsi:type="xsd:string">4311</id><name xsi:type="xsd:string"> item title 1 </name><procedure xsi:type="xsd:string">item procedure 11......
4

2 に答える 2

1

ここから別の答えを参照した後、これが私がしたことです。&apos;xml 内のすべての出現"'"箇所を、データが NSURLConnection オブジェクトから受信されたときに置き換えました。次に、そのデータをパーサーに渡します。

だから私がすることは次のとおりです。

NSData* parserData = [self resolveHTMLEntities: self.receivedData];
NSXMLParser* parser = [[NSXMLaParser alloc] initwithData:parserData];

以下は resolveHTMLEntitites メソッドです。

NSString *xmlCode = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSMutableString *temp = [NSMutableString stringWithString:xmlCode];

// Replace all the entities
[temp replaceOccurrencesOfString:@"&amp;apos;" withString:@"'" options:NSLiteralSearch range:NSMakeRange(0, [temp length])];

NSData *finalData = [temp dataUsingEncoding:NSUTF8StringEncoding];
return finalData;

キャッチは、その出現を置き換える必要がある理由に&apos;変換されることです。&amp;apos;

注: 上記のコード ブロックでは、メモリ管理は実行されません。

お役に立てれば。

于 2012-01-17T17:20:19.327 に答える
0

標準エンティティは&lt;&gt;&amp;、および&quot;です。 &apos;html エンティティ参照です。XML は、XHTML 名前空間または定義済みの他の名前空間を参照しています&apos;か?

(ちなみに、ヘッダーを含む XML の小さなセグメントを見るとよいでしょう。)

于 2009-11-20T18:45:06.430 に答える