Почему сущности в 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 полученное мной значение имеет &
,
Чего-чего?
Как мне получить libxml2 для декодирования атрибутных объектов (кажется, что это нормально для текстовых узлов), так что я просто получаю &
?
1 ответ
libxml2 не заменяет сущности по умолчанию, вы должны включить это при создании xmlReader.
Этот код имеет пример
http://xmlsoft.org/examples/reader2.c
Документы для XML_PARSE_NOENT здесь;
http://xmlsoft.org/html/libxml-parser.html
Хотя прошло много времени с тех пор, как я использовал биты сущностей из libxml2, я вспоминаю, что нужно было что-то сделать, чтобы установить средство распознавания сущностей по умолчанию. Документы на это здесь;
Если это не сработает, пожалуйста, отправьте мне ответный сигнал, и я поищу исходники для Foto Brisko, мне пришлось с этим справиться...
Хотя сообщение в блоге давно затянуто, я думаю, что образец отсюда
http://bill.dudney.net/roller/objc/entry/libxml2_push_parsing
Может быть, в нее включены и сущности, но это было так давно, что я забыл, и у меня сейчас нет времени, чтобы вернуться к этому.
Удачи!