libxml reader:如何读取属性值以保留实体引用?
|
我正在使用libxml2流阅读器,但在读取实体引用时遇到了麻烦。当实体引用位于元素内容内时,将其视为类型为“ 0”的节点,可以这样读取:
样本XML:
<p>Wikipedia® is a registered trademark</p>
示例C代码:
xmlTextReaderRead(reader);
if (xmlTextReaderNodeType(reader) == XML_READER_TYPE_ENTITY_REFERENCE)
{
const xmlChar *entityRef = xmlTextReaderConstName(reader);
///entityRef will be \"reg\"
}
读者确实会发出以下警告,但它对解析没有影响:
file://localhost/Volumes/Users/ben/testdata.html:1001: parser error : Entity \'reg\' not defined
Wikipedia® is a registered trademark of the <a href=\"http://www.wikimediafou
^
当实体引用位于属性内时,事情就不那么简单了:
样本XML:
<img alt=\"random text containing ® entity reference\" src=\"notImportant\" />
我正在阅读这样的属性:
while (xmlTextReaderMoveToNextAttribute(self.reader) == 1)
{
const xmlChar *attribName = xmlTextReaderConstName(self.reader);
const xmlChar *attribValue = xmlTextReaderConstValue(self.reader);
//process the attribute
}
如果属性值包含实体引用“ 6”,则将其忽略,例如:
//attribValue = \"random text containing entity reference\"
如何检索属性值,以使实体引用不会丢失?
(我认为这样做的方法是使用xmlReaderRead
读取属性值,以便将该值视为is0ѭ和XML_READER_TYPE_TEXT
节点,但是我不知道该怎么做。)
没有找到相关结果
已邀请:
0 个回复