libxml reader:如何读取属性值以保留实体引用?

| 我正在使用libxml2流阅读器,但在读取实体引用时遇到了麻烦。当实体引用位于元素内容内时,将其视为类型为“ 0”的节点,可以这样读取: 样本XML:
<p>Wikipedia&reg; 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&reg; is a registered trademark of the <a href=\"http://www.wikimediafou
              ^
当实体引用位于属性内时,事情就不那么简单了: 样本XML:
<img alt=\"random text containing &reg; 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
节点,但是我不知道该怎么做。)     
已邀请:

要回复问题请先登录注册