Почему сущности в libxml2 SAX-анализируются значения атрибутов? - PullRequest
1 голос
/ 16 февраля 2011

Я извлекаю значение сущности XML в синтаксическом анализаторе SAX libxml2 аналогично тому, как ответ на вопрос предлагает этот вопрос .В частности, мой код выглядит так (attributes[i].value is *xmlChar):

    int valueLength = (int) (attributes[i].end - attributes[i].value);
    value = [[[NSString alloc] initWithBytes:attributes[i].value
                                      length:valueLength
                                    encoding:NSUTF8StringEncoding
    ] autorelease];

Однако по какой-то причине, когда значение атрибута (в данном случае URL) имеет сущность & висходный XML, значение, которое я получаю, имеет &#38.

Скажите, что?

Как мне получить libxml2 для декодирования атрибутных объектов (кажется, это нормально для объектов текстовых узлов),так что я просто получаю &?

1 Ответ

3 голосов
/ 16 февраля 2011

libxml2 не заменяет сущности по умолчанию, вы должны включить это при создании xmlReader.

Этот код имеет пример

http://xmlsoft.org/examples/reader2.c

Документы для XML_PARSE_NOENT здесь;

http://xmlsoft.org/html/libxml-parser.html

Хотя прошло уже некоторое время с тех пор, как я использовал биты сущностей из libxml2, я вспоминаю, что нужно было что-то сделать, чтобы установить распознаватель сущностей по умолчанию. Документы на это здесь;

http://xmlsoft.org/xmlio.html

Если это не сработает, пожалуйста, ответьте мне, и я поищу в источнике фото Бриско, мне пришлось с этим справиться ...

Несмотря на то, что сообщение в блоге слишком длинное, я думаю, что пример отсюда

http://bill.dudney.net/roller/objc/entry/libxml2_push_parsing

может быть также включен компонент сущностей, но это было так давно, что я забыл, и у меня сейчас нет времени, чтобы вернуться к нему.

Удачи!

...