第一说不定检查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