tinyxml库修改现有XML文件的某个属性,并保存,怎么格式就乱了?

hurryboylqs 2008-10-23 11:55:16
<PlayList
Font="-12,0,0,0,400,0,0,0,1,0,0,4,0,宋体"
Color_Text="#008cc1"
Color_Hilight="#005489"
Color_Bkgnd="#eaf5fa"
Color_Number="#005489"
Color_Duration="#005489"
Color_Select="#84cef9"
Color_Bkgnd2="#eaf5fa"
LibraryMode="0"
ItemTips="1"
DisableDelFile="1"
EnableDragDrop="1"
ReadInfoMode="0"
TitleNumber="1"
IgnoreBadFiles="0"
SaveRelativePath="1"
SaveTags="0"
TagFormat="1"
ClickRating="0"
TagTitleFormat="%A - %T"
DefTitleFormat="%F"
/>
<Library
Enabled="0"
Valid="0"
PlayingCatalog=""
MonitorDir="0"
Directories_Count="0"
MaxItemCount="199"
/>
<Network
Proxy_Type="1"
Proxy_Server=""
Proxy_Port="0"
Proxy_UserName=""
Proxy_Password=""
FreedbAutoQuery="1"
ShowInfoWhenFail="1"
FreedbServer="http://freedb.freedb.org/~cddb/cddb.cgi"
CacheFolder="D:\Program Files\TTPlayer\Cache\"
ServerList_Count="0"
AcceptRecomList="0"
LastRecomListID="45"
CheckUpdateDays="7"
LastCheckedDay="148946"
DoCache="1"
CacheSpaceSize="300"
/>
<Convert
WriterIndex="0"
OutputBits="0"
ResampleRate="0"
ReplayGain="0"
Equalizer="0"
Surround="0"
Folder="C:\"
SaveMode="1"
AddNumber="0"
AddToPlayList="0"
ThreadPriority="0"
/>
<Equalizer
Profile="-2"
ProfileLast="-1"
Surround="0"
Custom="0:0,0,0,0,0,0,0,0,0,0"
Current="0:0,0,0,0,0,0,0,0,0,0"
/>
<Skin
PackageName="<Default_Skin>"
/>

...

这样的XML结构用什么库解析和修改他的属性比较好? tinyxml解析得很好,但修改后保存时格式就乱了,用记事本打开看不换行了,格式乱乱的,原本用记事本打开时格式整整齐齐的
...全文
1357 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
GZ22043786 2011-01-04
  • 打赏
  • 举报
回复
可以把XML的声明删掉就能解决了!
hurryboylqs 2008-10-23
  • 打赏
  • 举报
回复
不是做网络传输,只是修改一个现有的XML文件内容
编程夜猫 2008-10-23
  • 打赏
  • 举报
回复
楼主的格式很占空间。若在网络传递,还得考虑压缩啊。呵。
hurryboylqs 2008-10-23
  • 打赏
  • 举报
回复
能通过设置什么属性达到这样的效果吗?或者用那个库可以做到?我不想修改原本的排版格式
olncy 2008-10-23
  • 打赏
  • 举报
回复
多数解析库在保存时不会按照你自己原来的方式排版的,但应该有接口给你自己加入换行符之类的函数
gamedragon 2008-10-23
  • 打赏
  • 举报
回复
tinyxml不会保留之前的文本排版格式,输出的时候只在嵌套的时候换行。
<a>
<b/>
</a>
hurryboylqs 2008-10-23
  • 打赏
  • 举报
回复
主要是不换行了,换行的地方变成了空格

代码是这样写的

TiXmlDocument *myDocument = new TiXmlDocument("grfaf.xml");
myDocument->LoadFile();
//获得根元素
TiXmlElement *RootElement = myDocument->RootElement();
//输出根元素名称
cout << RootElement->Value() << endl;

//获得指定节点。
TiXmlElement *First = RootElement->FirstChildElement("Plugin");

if (First) // 存在这个节点
{
cout<<First->Attribute("Folder")<<endl;
cout<<First->Attribute("Modules_Count")<<endl;
cout<<First->Attribute("Modules_0")<<endl;

First->SetAttribute("Modules_Count",2); //修改属性值
First->SetAttribute("Modules_1","huryboylqs");
myDocument->SaveFile("grfaf.xml"); // 保存文件
}
else
{
cout<<"不存在这个节点"<<endl;
}
jingzhongrong 2008-10-23
  • 打赏
  • 举报
回复
tinyxml没用过,帮顶

不过是不是因为没有设置某些属性导致格式改变的
hurryboylqs 2008-10-23
  • 打赏
  • 举报
回复
楼上的建议很好,改下他的写文件部分
gamedragon 2008-10-23
  • 打赏
  • 举报
回复
如果是特定的应用,就修改一下TinyXML的输出部分吧。

16,470

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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