使用XMLDOCUMENT写XML文件遇到的一个问题。

Rico_Liu 2013-05-26 06:14:59
目的是写出像这种格式的xml文件:

<动作集合>
<动作组 标签="wait" 技能ID="1">
<动作单元 编号="1" 动作名称="idle">
</动作单元>
</动作组>
<动作组 标签="walk" 技能ID="1">
<动作单元 编号="1" 动作名称="walk">
</动作单元>
</动作组>
<动作组 标签="head_hurt" 技能ID="2">
<动作单元 编号="1" 动作名称="walk">
</动作单元>
</动作组>
</动作集合>


但实际输出是这样的:

<?xml version="1.0" encoding="utf-8"?>
<动作集合>
<动作组 标签="wait" 技能ID="1">
<动作单元 编号="1" 动作名称="idle" />
</动作组>
<动作组 标签="walk" 技能ID="1">
<动作单元 编号="1" 动作名称="walk" />
</动作组>
<动作组 标签="head_hurt" 技能ID="2">
<动作单元 编号="1" 动作名称="walk" />
</动作组>
</动作集合>

代码如下:
        public bool Save(string file_name)
{
XmlDocument writer = new XmlDocument();
writer.AppendChild(writer.CreateXmlDeclaration("1.0", "utf-8", null));
XmlElement root = writer.CreateElement("动作集合");
writer.AppendChild(root);
Debug.Log(group_list.Count);
for (int i = 0; i < group_list.Count;i++ )
{
ActGroup act_group = group_list[i];
XmlElement group_element = writer.CreateElement("动作组");
group_element.SetAttribute("标签", act_group.tag);
group_element.SetAttribute("技能ID",act_group.skill_id.ToString());
root.AppendChild(group_element);

for (int j = 0; j < act_group.act_list.Count;j++ )
{
ActUnit act_unit = act_group.act_list[j];
XmlElement unit_element = writer.CreateElement("动作单元");
unit_element.SetAttribute("编号", act_unit.id.ToString());
unit_element.SetAttribute("动作名称", act_unit.act_name);

group_element.AppendChild(unit_element);
}

}

writer.Save(file_name);
return true;
}


谢谢各位
...全文
79 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rico_Liu 2013-05-26
  • 打赏
  • 举报
回复
引用 7 楼 yujia120 的回复:
        public bool Save(string file_name)
        {
            XmlDocument writer = new XmlDocument();
            writer.AppendChild(writer.CreateXmlDeclaration("1.0", "utf-8", null));
            XmlElement root = writer.CreateElement("动作集合");
            writer.AppendChild(root);
            Debug.Log(group_list.Count);
            for (int i = 0; i < group_list.Count;i++ )
            {
                ActGroup act_group = group_list[i];
                XmlElement group_element = writer.CreateElement("动作组");
                group_element.SetAttribute("标签", act_group.tag);
                group_element.SetAttribute("技能ID",act_group.skill_id.ToString());
                root.AppendChild(group_element);
 
                for (int j = 0; j < act_group.act_list.Count;j++ )
                {
                    ActUnit act_unit = act_group.act_list[j];
                    XmlElement unit_element = writer.CreateElement("动作单元");
                    unit_element.SetAttribute("编号", act_unit.id.ToString());
                    unit_element.SetAttribute("动作名称", act_unit.act_name);
                    unit_element.InnerText = "";
                    group_element.AppendChild(unit_element);
                }
                
            }
            
            writer.Save(file_name);
            return true;
        }
谢谢
Rico_Liu 2013-05-26
  • 打赏
  • 举报
回复
引用 6 楼 sp1234 的回复:
你的第一行是怎么写的? 自己写的代码就要认识。如果简单抄袭别人的代码,请你也要动脑筋稍微看懂一两句。
不知道你从何而来的优越感
  • 打赏
  • 举报
回复
引用 5 楼 yujia120 的回复:
unit_element.InnerText = ""; group_element.AppendChild(unit_element);
这种差别基本上不会再任何解析程序上产生问题。
炮子枪 2013-05-26
  • 打赏
  • 举报
回复
可以查一下XmlWriterSetting ,这里边有xml样式的设置,具体的我记不太清楚了
社会栋梁 2013-05-26
  • 打赏
  • 举报
回复
        public bool Save(string file_name)
        {
            XmlDocument writer = new XmlDocument();
            writer.AppendChild(writer.CreateXmlDeclaration("1.0", "utf-8", null));
            XmlElement root = writer.CreateElement("动作集合");
            writer.AppendChild(root);
            Debug.Log(group_list.Count);
            for (int i = 0; i < group_list.Count;i++ )
            {
                ActGroup act_group = group_list[i];
                XmlElement group_element = writer.CreateElement("动作组");
                group_element.SetAttribute("标签", act_group.tag);
                group_element.SetAttribute("技能ID",act_group.skill_id.ToString());
                root.AppendChild(group_element);
 
                for (int j = 0; j < act_group.act_list.Count;j++ )
                {
                    ActUnit act_unit = act_group.act_list[j];
                    XmlElement unit_element = writer.CreateElement("动作单元");
                    unit_element.SetAttribute("编号", act_unit.id.ToString());
                    unit_element.SetAttribute("动作名称", act_unit.act_name);
                    unit_element.InnerText = "";
                    group_element.AppendChild(unit_element);
                }
                
            }
            
            writer.Save(file_name);
            return true;
        }
  • 打赏
  • 举报
回复
你的第一行是怎么写的? 自己写的代码就要认识。如果简单抄袭别人的代码,请你也要动脑筋稍微看懂一两句。
社会栋梁 2013-05-26
  • 打赏
  • 举报
回复
unit_element.InnerText = ""; group_element.AppendChild(unit_element);
Rico_Liu 2013-05-26
  • 打赏
  • 举报
回复
而且这不是自己的格式,是xml 1.0文档里就用的这种格式啊,.NET不就是支持xml 1.0么
Rico_Liu 2013-05-26
  • 打赏
  • 举报
回复
引用 1 楼 letsbetter 的回复:
那是.net里xml的标准格式,想写自己的格式就直接用字符串然后写文件吧。
那为什么动作组可以写成这样的格式?
Rico_Liu 2013-05-26
  • 打赏
  • 举报
回复
那为什么动作组可以写成这样的格式?
炮子枪 2013-05-26
  • 打赏
  • 举报
回复
那是.net里xml的标准格式,想写自己的格式就直接用字符串然后写文件吧。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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