Почему сущности в libxml2 SAX-анализируются значения атрибутов?

Я извлекаю значение сущности XML в синтаксическом анализаторе SAX libxml2 аналогично тому, как предлагает ответ на этот вопрос. Конкретно мой код выглядит так (attributes[i].value является *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 ответ

Решение

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

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

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

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

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

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

http://xmlsoft.org/xmlio.html

Если это не сработает, пожалуйста, отправьте мне ответный сигнал, и я поищу исходники для Foto Brisko, мне пришлось с этим справиться...

Хотя сообщение в блоге давно затянуто, я думаю, что образец отсюда

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

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

Удачи!

Другие вопросы по тегам