找回密码
 立即注册
查看: 3310|回复: 35

[脚本] Unity3D c#操作xml代码

  [复制链接]
发表于 2012-12-30 19:29 | 显示全部楼层 |阅读模式

1.读取xml文件
DataSet ds = new DataSet();
ds.ReadXml(Application.StartupPath + "\\filename.xml");
DataSet类表示数据在内存中的缓存,用于从数据源中检索到的数据在内存中的缓存。
ReadXml是DataSet类方法成员,(这里的参数是一个字符串,表示xml文件路径,)用于将XML架构和数据读入DataSet对象。
这样DataSet里面的Tables[0]中保存的就是filename.xml的内容了

2.访问(读取)xml文件中的数据项
假设XML文件如下
<?xml version="1.0" encoding="utf-8"?>
<test>
  <type>
    <name>路飞</name>
    <sex>男</sex>
    <age>18</age>
  </type>
  <type>
    <name>鸣人</name>
    <sex>男</sex>
    <age>17</age>
  </type>
</test>


ds.Tables[0].DefaultView[0]["name"].ToString() ;
即可访问到"路飞"
ds.Tables[0].DefaultView[1]["name"].ToString() ;
即可访问到"鸣人"
ds.Tables[0].DefaultView[0]["sex"].ToString() ;
即可访问到"男"
同理
ds.Tables[0].DefaultView[0]["age"] ;
可访问到第一项中的属性名为age的值 就是18
DeafultView[][]数组中的第一个方括号"[]"中的数字表示将要访问的是xml文件的第几个项 第二个方括号"[]"中的数字表示要访问的是该项中的哪一个属性,以字符串来区别。(c#中的table目前我还不太了解 不过这里的访问方式不是二维数组 二维数组的访问方式应该是[a,b]。table结构应该是重载过[]运算符所以这里类似于c++中二维数组的访问方式)

如果是在控制台要显示的话 可以用Console.Write(ds.Tables[0].DefaultView[0]["name"].ToString());来显示"路飞"
如果用foreach()语句遍历访问输出所有表的所有项的话 可以这样
foreach (DataRowView data in ds.Tables[0].DefaultView)
     {
           Console.Write(data["name"].ToString() + " " + data["sex"].ToString() + " " + data["age"].ToString() + "\n");
     }
DataRowView是一种系统定义的数据视图 表示DataTable 中的一行数据。

3.修改xml文件中的数据项
如同本文开头对DataSet的定义:DataSet类表示数据在内存中的缓存,用于从数据源中检索到的数据在内存中的缓存。
要修改xml文件中的数据项 要两步 一 修改DataSet中的数据 二 把DataSet数据写入xml文件 因为DataSet中的数据是内存中的缓存 所以直接修改的只是内存中的数据 xml文件并没有没修改 所以要写入
具体操作如下
ds.Tables[0].DefaultView[0]["name"] = "飞龙大将军";
ds.Tables[0].DefaultView[0]["age"] = "45";/*这样DataSet中的第一项中的"name"属性就变为了"飞龙大将军" "age"属
性变为了45*/
ds.WriteXml(Application.StartupPath + "\\filename.xml"); //这样就把DataSet中修改过的数据项写入到了filename.xml中
发表于 2017-2-19 20:58 | 显示全部楼层
很不错
发表于 2017-2-19 20:52 | 显示全部楼层
楼主是超人
发表于 2017-2-19 21:17 | 显示全部楼层
好帖就是要顶
发表于 2017-2-19 21:19 | 显示全部楼层
顶顶多好
发表于 2017-2-19 21:13 | 显示全部楼层
说的非常好
发表于 2017-7-13 21:04 | 显示全部楼层
真心顶
发表于 2017-7-13 21:03 | 显示全部楼层
难得一见的好帖
发表于 2017-7-13 21:06 | 显示全部楼层
说的非常好
发表于 2017-7-13 20:39 | 显示全部楼层
很好哦
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-5-5 16:51 , Processed in 0.093300 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表