現在、外部の解析済みエンティティ参照を使用して、別の XML を含む XML を解析しようとしています。ただし、NSXMLParser は、含まれている XML を解析する代わりにエラーをスローします。
xml は次のようになります。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE parentElement[
<!ENTITY extern SYSTEM "myGreatURI">
]>
<parentElement
attribute1="1"
attribute2="2"
...>
<childElement>
&extern;
<parentElement
..>
<childElement>
パーサーが外部参照を解析できるようにしました。
self.parser.shouldResolveExternalEntities = TRUE;
外部エンティティの定義が解析されると、それに応じたデリゲート メソッドが呼び出されます。
- (void)parser:(NSXMLParser *)parser foundExternalEntityDeclarationWithName:(NSString *)entityName publicID:(NSString *)publicID systemID:(NSString *)systemID
正しい値を渡します: entityName = "extern" および systemID = "myGreatURI"
しかし、xml で参照が解析されると、NSXMLParser エラー1549が発生します。
このエラーが発生した後でのみ、予期されるデリゲート メソッドが呼び出されます。
- (NSData *)parser:(NSXMLParser *)parser resolveExternalEntityName:(NSString *)entityName systemID:(NSString *)systemID
しかし今、systemID はnilです! さらに、NSXMLParser は返されたデータを期待どおりに使用しません。解析する代わりに、完全な XML が 1 つの文字列として検出され、メソッドを通じて渡されます。
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
ご覧のとおり、私にはいくつかの異なる問題があります。残念ながら、Google と Apple のドキュメンテーションは、私に無知なままでした。