当源xml节点文本包含转义特殊字符时解析QDomeNode
在使用Qt-domxml解析器时,我遇到了包含&lt;在它的文本中。 原始xml可能如下所示:当源xml节点文本包含转义特殊字符时解析QDomeNode,xml,qt,parsing,qtxml,Xml,Qt,Parsing,Qtxml,在使用Qt-domxml解析器时,我遇到了包含&lt;在它的文本中。 原始xml可能如下所示: <?xml version="1.0" encoding="UTF-8"?> ... <Material> <Name><Beige>1</Name> <Color>#d3bd90</Color> </Material> ... 贝格
<?xml version="1.0" encoding="UTF-8"?>
...
<Material>
<Name><Beige>1</Name>
<Color>#d3bd90</Color>
</Material>
...
贝格1
#d3bd90
但是解析器显然会翻译&lt;及&gt;可能在调用QDomDocument::setDocument时将文本转换为<和>。因此,在name节点上调用QDomNode::text()会将名称命名为“1”,而不是预期的“1”
如果名称节点中的实际文本可能包含转义的特殊字符,是否有一种简单的方法来解决此问题?最好在仍然允许我继续使用qtdom解析器的情况下
---编辑---
刚刚使用基于QXmlDefaultHandler的SAX读取器进行了测试,结果相同。QXmlDefaultHandler::characters将仅为Name元素返回“1”。在QDomNode::toText()之前尝试QDomNode::normalize您需要的是toElement(),然后是text(),在示例中可以很好地使用。