为什么libxml2 SAX解析的属性值中的实体被编码?

时间:2011-02-16 05:56:13

标签: objective-c xml ios libxml2 entities

我在libxml2 SAX解析器中获取XML实体的值类似于ansewr this question建议的方式。具体来说,我的代码是这样的(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 个答案:

答案 0 :(得分:3)

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

可能也会打开实体的东西,但它已经很久了我已经忘记了,我现在没有时间回过头来。

祝你好运!