MFC tinyxml2不同文件的节点经修改后拷贝

cky77 2018-10-18 11:26:50
由A,B两个xml文件,我想在第一个里找出一个节点,然后按我的要求修改之后拷贝到第二个xml文件里去。
上代码

tinyxml2::XMLNode* copy = node->DeepClone(&docXmlCommand);
//对copy节点进行修改?
CString modelName;//指令模板名称
tinyxml2::XMLDocument docXmlcopy = copy->ToDocument();
XMLElement* elmtRootcopy = docXmlcopy.RootElement();
while (elmtRootcopy)
{
const XMLAttribute * Attr = elmtRootcopy->FirstAttribute();
while (Attr)
{
if ((CString)(Attr->Name()) == "name")
{
modelName = (CString)(Attr->Value());
elmtRootcopy->SetAttribute("name", command_name);
elmtRootcopy->SetAttribute("model_name", modelName);
}
Attr = Attr->Next();
}
}
elmtRoot->InsertEndChild(copy);
docXmlCommand.SaveFile("Command.xml");


程序跑的时候,elmtRootcopy 这个根节点是空的。

tinyxml2::XMLNode* copy = node->DeepClone(&docXmlCommand);
elmtRoot->InsertEndChild(copy);
docXmlCommand.SaveFile("Command.xml");

这三行可以实现,节点的拷贝。就是对拷贝的节点修改,不知道该怎么弄。
我想的是把节点拷贝出来,然后修改好,再贴到目标文件。
难道只能先拷贝完再去目标文件做修改吗..求解
...全文
181 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cky77 2018-10-18
  • 打赏
  • 举报
回复
嗯。。解决了,用的第二种思路。先拷贝完了再对第二个xml进行修改。
第一种
tinyxml2::XMLNode* copy = node->DeepClone(&docXmlCommand);
tinyxml2::XMLDocument docXmlcopy = copy->ToDocument();
XMLElement* elmtRootcopy = docXmlcopy.RootElement();
XMLNode的ToDocument()得出的和 tinyxml2::XMLDocument docXmlcopy感觉不是一回事,反正得到根节点是空的。等大神解答

3,055

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC HTML/XML
社区管理员
  • HTML/XML社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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