luckstar 发表于 2012-12-30 19:29

Unity3D c#操作xml代码


1.读取xml文件
DataSet ds = new DataSet();
ds.ReadXml(Application.StartupPath + "\\filename.xml");
DataSet类表示数据在内存中的缓存,用于从数据源中检索到的数据在内存中的缓存。
ReadXml是DataSet类方法成员,(这里的参数是一个字符串,表示xml文件路径,)用于将XML架构和数据读入DataSet对象。
这样DataSet里面的Tables中保存的就是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.DefaultView["name"].ToString() ;
即可访问到"路飞"
ds.Tables.DefaultView["name"].ToString() ;
即可访问到"鸣人"
ds.Tables.DefaultView["sex"].ToString() ;
即可访问到"男"
同理
ds.Tables.DefaultView["age"] ;
可访问到第一项中的属性名为age的值 就是18
DeafultView[][]数组中的第一个方括号"[]"中的数字表示将要访问的是xml文件的第几个项 第二个方括号"[]"中的数字表示要访问的是该项中的哪一个属性,以字符串来区别。(c#中的table目前我还不太了解 不过这里的访问方式不是二维数组 二维数组的访问方式应该是。table结构应该是重载过[]运算符所以这里类似于c++中二维数组的访问方式)

如果是在控制台要显示的话 可以用Console.Write(ds.Tables.DefaultView["name"].ToString());来显示"路飞"
如果用foreach()语句遍历访问输出所有表的所有项的话 可以这样
foreach (DataRowView data in ds.Tables.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.DefaultView["name"] = "飞龙大将军";
ds.Tables.DefaultView["age"] = "45";/*这样DataSet中的第一项中的"name"属性就变为了"飞龙大将军" "age"属
性变为了45*/
ds.WriteXml(Application.StartupPath + "\\filename.xml"); //这样就把DataSet中修改过的数据项写入到了filename.xml中

海蓝 发表于 2017-2-19 20:58

很不错

sk205 发表于 2017-2-19 20:52

楼主是超人

憨豆先生 发表于 2017-2-19 21:17

好帖就是要顶

Json 发表于 2017-2-19 21:19

顶顶多好

SEVENSKY 发表于 2017-2-19 21:13

说的非常好

arthurfu 发表于 2017-7-13 21:04

真心顶

zzl961550922 发表于 2017-7-13 21:03

难得一见的好帖

对你爱不完 发表于 2017-7-13 21:06

说的非常好

zzl961550922 发表于 2017-7-13 20:39

很好哦
页: [1] 2 3 4
查看完整版本: Unity3D c#操作xml代码