用dom操作xml后多了 ,还将attribute位置给移动了。

蜡笔小新啦 2010-11-06 10:41:08

bool MainWindow::WriteModifyToXml(QStringList &modifyList,QStringList &modifyUserList,QList<bool> &ModifyValueList)
{

QStringList list11(modifyList);
QStringList list2(modifyUserList);

QFile file(UserAdminSettingFilePath);
QDomDocument doc;
QString errStr;int errLine;int errColumn;
doc.setContent(&file,false,&errStr,&errLine,&errColumn);

if ( file.isOpen())
file.close();

QDomElement root = doc.documentElement();
QDomElement child = root.firstChildElement();
QString modifyStr,name;QStringList modifyRowList;
if ( ModifyValueList.contains(false))
{
while(!child.isNull())
{
if ( child.tagName() == "cam")
{
child = child.firstChildElement();break;
}
child = child.nextSiblingElement();
}

for(int j=0;j<modifyRowList.count();j++)
{
QString str1 = modifyRowList[j];
QString str2 = UserAdminHeaderList[j];
}

while(!child.isNull())
{
if ( child.tagName() == "engineer" )
{
name = child.attribute("user","#none#");
int indexList = modifyUserList.indexOf(name);
if ( indexList != -1 )
{
modifyStr = modifyList.at(indexList);
modifyRowList = modifyStr.split("#");
for(int j=0;j<modifyRowList.count();j++)
{
QString str1 = UserAdminHeaderList[j];
QString str2 = modifyRowList[j];
child.setAttribute(str1,str2);
}
}
}

child = child.nextSiblingElement();
}
}


QFile f(UserAdminSettingFilePath);
if (! f.open(QFile::WriteOnly | QFile::Text))
{
QMessageBox::critical(this,tr("Failed"),tr("save failed!Please call Ken!"));
return false;
}

QTextStream textStream(&f);
doc.save(textStream,0);
f.close();
return true;
}


-------------------------------
<?xml version='1.0' encoding='utf-8'?>
<class>
<information>
aaa
</information>
<Type qa_first_step="yes;no" second_step="yes;no" qa_second_step="yes;no" input="yes;no" qa_input="yes;no" job="Fresh_man;Operator;Assistant_Captain;Captain;Assistant_Supervisor;Supervisor" first_step="yes;no" shift="day;middle;night" sys_admin="yes;no" team="cam;qa" />
<cam>
<engineer user="ken" sys_admin="yes" shift="night" team="cam" chinese_name="abc" passwd="aGVsbG9rZW4=" qa_first_step="yes" second_step="yes" />
<engineer user="aken" sys_admin="yes" shift="day" team="cam" chinese_name="addd" passwd="YWtlbg==" qa_first_step="yes" second_step="yes" />
<engineer user="cken" sys_admin="yes" shift="day" team="cam" chinese_name="ddfdfd" passwd="Y2tlbg==" qa_first_step="yes" second_step="yes"/>
<engineer user="dken" sys_admin="yes" shift="day" team="cam" chinese_name="vvvv" passwd="ZGtlbg==" qa_first_step="yes" second_step="yes" />
</cam>
</class>

---------------------- 改成了 多了 还将user等attribute移动到second_step属性后面了
<?xml version='1.0' encoding='utf-8'?>
<class>
<information>
aaa;
</information>
<Type qa_first_step="yes;no" second_step="yes;no" qa_second_step="yes;no" input="yes;no" qa_input="yes;no" job="Fresh_man;Operator;Assistant_Captain;Captain;Assistant_Supervisor;Supervisor" first_step="yes;no" shift="day;middle;night" sys_admin="yes;no" team="cam;qa" />
<cam>
<engineer passwd="aGVsbG9rZW4=" qa_first_step="yes" second_step="yes" user="ken" sys_admin="yes" shift="night" team="cam" chinese_name="abc" />
<engineer passwd="YWtlbg==" qa_first_step="yes" second_step="yes" user="aken" sys_admin="yes" shift="day" team="cam" chinese_name="addd" />
<engineer passwd="Y2tlbg==" qa_first_step="yes" second_step="yes" user="cken" sys_admin="yes" shift="day" team="cam" chinese_name="ddfdfd" />
<engineer passwd="ZGtlbg==" qa_first_step="yes" second_step="yes" user="dken" sys_admin="yes" shift="day" team="cam" chinese_name="vvvv" />
</cam>
</class>







...全文
210 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
solonet 2011-03-18
  • 打赏
  • 举报
回复

http://www.w3school.com.cn/xmldom/met_node_normalize.asp

其实很简单,只加一条语句就搞定了
XmlDocument doc = new XmlDocument();

doc.Normalize();

// 摘要:
// 将此 XmlNode 下子树完全深度中的所有 XmlText 节点都转换成“正常”形式,在这种形式中只有标记(即标记、注释、处理指令、CDATA
// 节和实体引用)分隔 XmlText 节点,也就是说,没有相邻的 XmlText 节点。

16,238

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧