首先可能检查是否在您的 xml 中声明了 ndash:
<!ENTITY ndash "–"> <!-- en dash, U+2013 ISOpub -->
<!ENTITY mdash "—"> <!-- em dash, U+2014 ISOpub -->
命名实体,在 XML 规范中也称为内部实体,是您在谈论“实体”时通常所指的内容。您可以在 DTD 或内部子集(即,作为文档中声明的一部分)中声明它们,并在文档中将它们用作参考。在 XML 文档解析期间,实体引用被其表示替换。用简单的英语来说,这些实体只是在您处理文档时得到扩展的宏。
例子:
<!DOCTYPE article PUBLIC "-//NLM//DTD Journal
Publishing DTD v3.0 20080202//EN" "journalpublishing3.dtd"
[<!ENTITY ndash "–">]
看到这里了解更多信息
如果一切正常,那么也可以尝试其他方法:您可以使用内置的 QtWebKit。例子:
class MyPageLoader : public QObject
{
Q_OBJECT
public:
MyPageLoader();
void loadPage(const QUrl&);
public slots:
void replyFinished(bool);
private:
QWebView* m_view;
};
MyPageLoader::MyPageLoader()
{
m_view = new QWebView();
connect(m_view, SIGNAL(loadFinished(bool)),
this, SLOT(replyFinished(bool)));
}
void MyPageLoader::loadPage(const QUrl& url)
{
m_view->load(url);
}
void MyPageLoader::replyFinished(bool ok)
{
QWebElementCollection elements = m_view->page()->mainFrame()->findAllElements("a");
foreach (QWebElement e, elements) {
// Process element e
}
}
使用类
MyPageLoader loader;
loader.loadPage("http://www.google.com")
你也可以在这里找到一些包装
检索元素:
QWebView* view = new QWebView(parent);
view.load(QUrl("http://www.your_site.com"));
QWebElementCollection elements = view.page().mainFrame().findAllElements("a");