在大多数情况下,我实现了一个例程 C++/Qt 来比较 QDomElement。
bool XMLtools::compare( QDomElement & element1, QDomElement & element2 )
{
QString tag1 = element1.tagName() ;
QString tag2 = element2.tagName() ;
if ( tag1 != tag2 )
return false ;
QList<QDomElement> elts1 = getChildElements(element1);
QList<QDomElement> elts2 = getChildElements(element2);
QDomElement c1, c2, tmp ;
QString name1, name_tmp, text1, text2 ;
if(elts1.size() != elts2.size())
return false ;
if(elts1.size() == 0)
{
text1 = c1.text() ;
text2 = c2.text() ;
if( text1 != text2 )
return false ;
}
for ( int i = elts1.size() - 1 ; i > -1 ; i-- )
{
c1 = elts1.at(i);
QString name1 = c1.tagName();
for( int j = elts2.size() - 1 ; j > -1 ; j-- )
{
tmp = elts2.at(j) ;
name_tmp = tmp.tagName() ;
if( name_tmp == name1 )
{
c2 = tmp ;
break ;
}
if( j == 0 )
return false ;
}
if ( ! compare(c1, c2) )
return false ;
}
return true ;
}
1. 可以用这种方法比较所有的QDomNode元素吗(即比较text())?
QDomCDATASection
特别是,作为元素和二进制格式,我应该对特殊情况保持谨慎吗?如果 a
QDomNode
包含二进制数据,如何比较它们,当内部数据相同时返回 true ?
谢谢 !