第一說不定檢查ndash的是在XML中聲明:「實體」
<!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 "–">]
see here for more info
如果一切OK,然後或者嘗試其他的東西:你可以使用內建的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")
你也可以找到一些wraper here
檢索元素:
QWebView* view = new QWebView(parent);
view.load(QUrl("http://www.your_site.com"));
QWebElementCollection elements = view.page().mainFrame().findAllElements("a");
你的問題是,HTML不是XML。你需要一個HTML解析器。 – Blender 2013-05-13 00:18:41
那麼我可以使用哪些工具?也許我可以使用一個工具儘可能地將html轉換爲xhtml,然後使用xml工具,或者我應該使用不同的東西?這似乎是一個簡單的標題錯誤xml問題,但這個ndash從哪裏來,以及如何解決這個問題? – shkra19 2013-05-13 00:22:51