1
0
mirror of https://gitee.com/drabel/LibQQt.git synced 2025-01-04 10:18:44 +08:00

QQtDictionary fromXML(),先解析XML头,后解析XML体

This commit is contained in:
tianduanrui 2020-03-05 07:36:55 +08:00
parent a3dcce7c5b
commit 197fdd2cea

View File

@ -791,12 +791,14 @@ void QQtDictionary::packDictionaryToDomNode ( const QQtDictionary& node, QDomNod
// <sub-person2 b="11"> </sub-person2> // <sub-person2 b="11"> </sub-person2>
//</person> //</person>
QDomNode& object = result; QDomNode& object = result;
for ( QMap<QString, QQtDictionary>::Iterator itor = node.getMap().begin(); itor != node.getMap().end(); itor++ ) for ( QMap<QString, QQtDictionary>::Iterator itor = node.getMap().begin(); itor != node.getMap().end(); itor++ )
{ {
//QMap<QString, QQtDictionary>& m = node.getMap(); //QMap<QString, QQtDictionary>& m = node.getMap();
const QString& key = itor.key(); const QString& key = itor.key();
const QQtDictionary& srcvalue = itor.value(); const QQtDictionary& srcvalue = itor.value();
//1! "__processinginstruction__" <?xml version='1.0' encoding='UTF-8'?>
if ( key == "__processinginstruction__" ) if ( key == "__processinginstruction__" )
{ {
//"xml" //"xml"
@ -810,7 +812,15 @@ void QQtDictionary::packDictionaryToDomNode ( const QQtDictionary& node, QDomNod
} }
continue; continue;
} }
}
for ( QMap<QString, QQtDictionary>::Iterator itor = node.getMap().begin(); itor != node.getMap().end(); itor++ )
{
//QMap<QString, QQtDictionary>& m = node.getMap();
const QString& key = itor.key();
const QQtDictionary& srcvalue = itor.value();
//2! "__attributes__" <Person attr-key="attr-value"> </Person>
if ( key == "__attributes__" ) if ( key == "__attributes__" )
{ {
//"attributes" key = value //"attributes" key = value
@ -825,6 +835,7 @@ void QQtDictionary::packDictionaryToDomNode ( const QQtDictionary& node, QDomNod
continue; continue;
} }
//3! "#text" <Person>#text</Person>
if ( key == "#text" ) if ( key == "#text" )
{ {
//"text" //"text"
@ -834,9 +845,10 @@ void QQtDictionary::packDictionaryToDomNode ( const QQtDictionary& node, QDomNod
continue; continue;
} }
//4! "#comment" <!--#comment-->
if ( key == "#comment" ) if ( key == "#comment" )
{ {
//"comment" //only one
if ( srcvalue.getType() == DictValue ) if ( srcvalue.getType() == DictValue )
{ {
const QString& value2 = srcvalue.getValue().toString(); const QString& value2 = srcvalue.getValue().toString();
@ -845,6 +857,7 @@ void QQtDictionary::packDictionaryToDomNode ( const QQtDictionary& node, QDomNod
continue; continue;
} }
//multiple
for ( int i = 0; i < srcvalue.getList().size(); i++ ) for ( int i = 0; i < srcvalue.getList().size(); i++ )
{ {
QList<QQtDictionary>& l = srcvalue.getList(); QList<QQtDictionary>& l = srcvalue.getList();
@ -854,6 +867,7 @@ void QQtDictionary::packDictionaryToDomNode ( const QQtDictionary& node, QDomNod
continue; continue;
} }
//5! dict["person"][0-] <person>a</person> <person>b</person>
if ( srcvalue.getType() == DictList ) if ( srcvalue.getType() == DictList )
{ {
#if 1 #if 1
@ -871,6 +885,7 @@ void QQtDictionary::packDictionaryToDomNode ( const QQtDictionary& node, QDomNod
continue; continue;
} }
//6! dict[key][child node] <book>...</book>
QDomElement value = doc.createElement ( key ); QDomElement value = doc.createElement ( key );
packDictionaryToDomNode ( srcvalue, value, doc ); packDictionaryToDomNode ( srcvalue, value, doc );
object.appendChild ( value ); object.appendChild ( value );