我正在使用Qt的WebKit类遍历DOM。请查看以下伪HTML:
<br>111<a class="node">AAA</a>
<br>222<a class="node">BBB</a>
...
我可以使用findAll()
轻松找到锚点。但是我还需要在元素之前获取文本(&#34; 111&#34;和&#34; 222&#34;)。我尝试使用previousSibling()
,但当然这给了<br>
元素,因为&#34; 111&#34;和&#34; 222&#34;文本不是元素。
我找到了一个访问元素中文本的函数,但是如何访问 <br>
和<a>
元素之间的?
答案 0 :(得分:0)
似乎不可能。我能找到的唯一解决方法是获取父节点的纯文本并解析生成的纯文本。
答案 1 :(得分:0)
这就是我解决它的方式:
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;
}
}