Какао: NSXMLParser - как разрешить объекты, определенные в DTD - PullRequest
0 голосов
/ 01 июня 2009

Я использую NSXMLParser для разбора больших файлов XML - все идет хорошо, НО :) Я не могу заставить анализатор разрешить внешние объекты из DTD.

Я гуглил и читал документацию и старые письма ... и я установил parser.shouldResolveExternalEntities = YES

Я получаю: - (NSData *) синтаксический анализатор: (AQXMLParser *) синтаксический анализатор resolExternalEntityName: (NSString *) имя systemID: (NSString *) systemID но я понятия не имею, что вернуть ... сущности определены в DTD ...

если бы я мог получить следующую информацию о записях в DTD, я бы сам создал таблицу - (void) синтаксический анализатор: (AQXMLParser *) анализатор foundInternalEntityDeclarationWithName: (NSString *) имя значение: (NSString *) значение;

И все же разве NSXMLParser не может заменить меня? как-то ...:)

В любом случае, я понятия не имею, как поступить


кросс-пост @ cocoa-dev@lists.apple.com

1 Ответ

2 голосов
/ 01 июня 2009

Поскольку URI в DTD не обязательно указывают на реальное местоположение ссылочного объекта или объекта, задача делегата состоит в том, чтобы разрешить внешний объект:

В анализаторе: resolExternalEntityName: systemID:
используйте NSXMLDTD для загрузки внешнего DTD (systemID) и
используйте объект NSXMLDTDNode, возвращенный NSXMLDTD: entityDeclarationForName: entityName, для разрешения объекта

...