我正在编写一个方法来解析HTML字符串,查询并获取一些节点,然后输出这些节点的HTML。使用libxml保留HTML实体
我使用的libxml ,并已成功地加载和解析输入HTML和输出,我想,但我想任何HTML实体保存,libxml的节点的HTML字符串似乎将这些到他们相关的UTF-8字符中。
这里就是我这么远(代码是一个Objective-C项目的一部分):
NSString *HTMLString = ...
NSData *documentData = [HTMLString dataUsingEncoding:NSUTF8StringEncoding];
//Create the document
xmlDocPtr doc = htmlReadMemory([documentData bytes],
[documentData length],
"",
NULL,
HTML_PARSE_NOWARNING | HTML_PARSE_NOERROR);
//Get the node I want to output
xmlNodePtr node = ...
//Create the node buffer and fill it with the node content
xmlBufferPtr nodeBuffer = xmlBufferCreate();
htmlNodeDump(nodeBuffer, doc, node);
...
这转储节点精细的HTML内容,但字符实体被转换为UTF-8字符 - 输入HTML中存在的唯一实体是引号,例如’
和‘
,我在写出节点的HTML内容时需要保留这些引号。
我查看了有关HTML解析和HTML树函数的libxml文档,我似乎无法找到任何有关HTML实体的信息。我也不确定这是否是在解析或输出过程中完成的。我确实尝试使用xmlNodeGetContent()
简单地输出节点的内容,并且实体也被替换为相应的UTF8字符,这让我怀疑这是一个解析问题,但我不确定。