<html>
<p>start</p>
<ID>123456</ID>
<MGR>hello</MGR>
<NAME>zhangsan</NAME>
<p>END</p>
</html>
就简单的解析这html格式的数据
有时候我们要提取里面的元素值,就好像提取ID元素里面的123456
方法:利用QT提供的xml
(具体xml和html两种格式区别我这就不多说)
代码片段:
bool AnalysisXML::analysisdata(QByteArray arry)
{
QString errorStr;
int errorLine;
int errorColumn;
QDomDocument doc;
if (!doc.setContent(arry,false, &errorStr, &errorLine, &errorColumn))
{
qDebug() << "Error: Parse error at line " << errorLine << ", "
<< "column " << errorColumn << ": "
<< qPrintable(errorStr) ;
return false;
}
QDomElement root = doc.documentElement();
// if (root.tagName() != "trx")
// {
// qDebug() << "Error: Not a trx xml" ;
// return false;
// }
parseTrxMembers(root);
return true;
}
void AnalysisXML::parseTrxMembers(const QDomElement &element)
{
QDomNode child = element.firstChild(); //找到元素下的所有节点
while (!child.isNull())
{
if (child.toElement().tagName() != "multistage") //查找特殊节点名
{
qDebug()<<child.toElement().tagName()<<":"<<child.toElement().text();
}
else
{
parseDefectMembers(child.toElement());
}
child = child.nextSibling(); //下一个儿子(同级节点)
}
}
void AnalysisXML::parseDefectMembers(const QDomElement &element)
{
QDomNode child = element.firstChild(); //找到元素下的所有节点
while (!child.isNull())
{
parseDefect_CodeMembers(child.toElement());
child = child.nextSibling(); //下一个儿子(同级节点)
}
}
void AnalysisXML::parseDefect_CodeMembers(const QDomElement &element)
{
QDomNode child = element.firstChild(); //找到元素下的所有节点
while (!child.isNull())
{
qDebug()<<child.toElement().tagName()<<":"<<child.toElement().text();
;
child = child.nextSibling(); //下一个儿子(同级节点)
}
}