如何解决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
节点,但是我不知道该怎么做。)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。