使用Qt中包含HTML的节点解析XML
我尝试解析一个XML文件,其中一些节点在Qt中包含HTML,如下所示:使用Qt中包含HTML的节点解析XML,qt,html-parsing,xml-parsing,Qt,Html Parsing,Xml Parsing,我尝试解析一个XML文件,其中一些节点在Qt中包含HTML,如下所示: <root> <list> <element>Some <i>text<i></element> <element><b>another line of text<b></element> <element><i>Tag opened here</element&
<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:我找到的获取QdomeElement文本的唯一方法是: 使用save()函数(),然后我将得到整行“…”,而不仅仅是内部文本 QXmlStreamReader
有函数readElementText(QXmlStreamReader::IncludeChildElements)(),但它删除了HTML标记,因此第一个示例的文本将只是“一些文本” 能否以更有效的方式做到这一点 我想到了另一个解决方案,你怎么看:
在解析xml文件之前,如何包装CDATA部分中标记的内容(使用字符串替换或正则表达式函数)?执行此操作的dom方法应该是nodeValue()。QDomDocument和QXmlStreamReader都无法解析HTML。它们是XML解析器。要在Qt中解析HTML,应该使用QtWebKit
#include <QtCore>
#include <QtGui>
#include <QtWebKit>
int main(int argc, char ** argv)
{
QApplication app(argc, argv);
QString html =
" \\
<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> \\
";
QWebPage page;
page.mainFrame()->setHtml(html);
QWebElement htmlElement = page.mainFrame()->findFirstElement("root list element i");
qDebug() << htmlElement.toPlainText();
return app.exec();
}
相关的:
"text"