在 Qt 中使用包含 HTML 的节点解析 XML
我尝试在 Qt 中解析包含一些包含 HTML 的节点的 XML 文件,它看起来像这样:
<root>
<list>
<element>Some <i>text<i></element>
<element><b>another line of text<b></element>
<element><i>Tag opened here</element>
<element>and closed here</i></element>
</list>
</root>
我在 Qt 中尝试了不同的方法,但从节点获取 HTML 不知何故是不可能的(以简单的方式)。
QDomDocument:
我发现获取 QDomElement 文本的唯一方法: 使用 save() 函数(文档),但随后我会得到整行“
QXmlStreamReader
有函数 readElementText(QXmlStreamReader::IncludeChildElements) (文档 ),但它删除了 HTML 标签,因此第一个示例的文本将只是“Some text”。
可以通过更有效的方式做到这一点吗?
我想到了另一个解决方案,您觉得如何:
将
I try to parse an XML file with some nodes containing HTML in Qt, it looks like this:
<root>
<list>
<element>Some <i>text<i></element>
<element><b>another line of text<b></element>
<element><i>Tag opened here</element>
<element>and closed here</i></element>
</list>
</root>
I tried different approaches in Qt, but getting the HTML from the node was somehow not possible (in an easy way).
QDomDocument:
The only way I found to get the text of a QDomElement:
Use the save() function (documentation), but then I would get the whole line "<element>...</element>", not just the inner text.
QXmlStreamReader
There is the function readElementText(QXmlStreamReader::IncludeChildElements) (documentation), but it removes the HTML tags, so the text of the first example would be only "Some text".
Can this be done in a more effective way?
I thought of another solution, what do you think about it:
How about wrapping the contents of the <element> tags in CDATA sections (using string replace or regex functions) before the xml file is parsed?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
QDomDocument 和 QXmlStreamReader 都无法解析 HTML。它们是 XML 解析器。要在 Qt 中解析 HTML,您应该使用 QtWebKit。
输出:
Neither QDomDocument nor QXmlStreamReader is able to parse HTML. They are XML parsers. To parse HTML in Qt you should use QtWebKit.
Output:
执行此操作的 dom 方法应该是 nodeValue()。
The dom method of doing it should be nodeValue().