0

我正在使用 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>

4

2 回答 2

0

似乎这是不可能的。我能找到的唯一解决方法是获取父节点的纯文本并解析生成的纯文本。

于 2014-06-23T22:16:52.547 回答
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;
    }
}
于 2015-08-06T07:31:32.307 回答