我正在使用Qt的WebKit类遍历DOM。请查看以下伪 HTML:
<br>111<a class="node">AAA</a>
<br>222<a class="node">BBB</a>
...
我可以使用findAll()
轻松找到锚点。但是,我还需要在元素("111"和"222")之前获取文本。我试图使用previousSibling()
但当然这给了我<br>
元素,因为"111"和"222"文本不是元素。
我找到了一个访问元素内文本的函数,但我如何在<br>
和<a>
元素之间访问?
似乎不可能。我能找到的唯一解决方法是获取父节点的纯文本并解析生成的纯文本。
这是我解决它的方法:
QWebElement *element = ...
// find out if QWebElement has text
QDomDocument doc;
doc.setContent(element->toOuterXml());
QDomElement domelem = doc.documentElement();
for(QDomNode n = domelem.firstChild(); !n.isNull(); n = n.nextSibling())
{
QDomText t = n.toText();
if (!t.isNull())
{
// it has text !
qDebug() << t.data();
break;
}
}