C# 操作xml与对象转化用什么方法?

kingofvc 2007-07-11 07:12:36
<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="Rich" name="Rich" password="1" address="33/2 Mary ST Strathfield NSW 2250"/>
<user id="Randy" name="Randy" password="1" address="37/7 Jones ST Summer Hill NSW 2258"/>
<user id="Shelly" name="Shelly" password="1" address="3/2 Kingscross ST city NSW 2250"/>
<user id="Vincent" name="Vincent" password="1" address="36/7 George ST Chippendale NSW 2250"/>
<user id="Jay" name="Jay" password="1" address="33/2 Pancake ST Epping NSW 2250"/>
<user id="Andy" name="Andy" password="1" address="33/2 Jhon ST Telopia NSW 2250"/>
</users>
以上是一个简单的xml文件 定义了一个User的列表
我现在想用一个User类 通过代码把这个xml中的每个<user>结点取出来,放到User类里面

也就是说xml与对象的转化 同理,我也需要反过来将User对象的集合转化到一个xml文件中,
请问有没有直接的方法呢?

一个个属性读取xml 然后拼凑User对象的方法就免了,因为这种笨办法谁都能想到
...全文
823 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kingofvc 2007-07-11
  • 打赏
  • 举报
回复
感谢各位 尤其是liufuyahong 很久没有这么热心的人了
liufuyahong 2007-07-11
  • 打赏
  • 举报
回复
using System;
using System.Text;
using System.IO;
using System.Xml.Serialization;

[Serializable]
public class user
{
string _id;

[XmlAttribute(AttributeName="id")]
public string id
{
get { return _id; }
set { _id = value; }
}
string _name;

[XmlAttribute(AttributeName = "name")]
public string name
{
get { return _name; }
set { _name = value; }
}
string _password;

[XmlAttribute(AttributeName = "password")]
public string password
{
get { return _password; }
set { _password = value; }
}
string _address;

[XmlAttribute(AttributeName = "address")]
public string address
{
get { return _address; }
set { _address = value; }
}
}

public class UserSerialize
{
public static string SerializeUsers(user[] Users)
{
StringBuilder sb=new StringBuilder();
StringWriter w=new StringWriter(sb);

XmlRootAttribute Root = new XmlRootAttribute();
Root.ElementName = "users";

XmlSerializer sr = new XmlSerializer(typeof(user[]), Root);
sr.Serialize(w, Users);

w.Close();

return sb.ToString();
}

public static user[] DeSerializeUsers(string XMLStr)
{
XmlRootAttribute Root = new XmlRootAttribute();
Root.ElementName = "users";

XmlSerializer sr = new XmlSerializer(typeof(user[]), Root);

StringReader strReader = new StringReader(XMLStr);
System.Xml.XmlReader r = new System.Xml.XmlTextReader(strReader);
try
{
user[] Result= (user[])sr.Deserialize(r);
return Result;
}
finally
{
strReader.Close();
r.Close();
}
}


public static string ReadFile(string FileName)
{
StreamReader r = new StreamReader(FileName);
try
{
return r.ReadToEnd();
}
finally
{
r.Close();
}
}
}


class Class1
{
[STAThread]
static void Main(string[] args)
{
string s =UserSerialize.ReadFile("XMLFile1.xml");
user[] Users = UserSerialize.DeSerializeUsers(s);
foreach (user u in Users)
Console.WriteLine(u.name);

Console.Read();
}
}
Jinglecat 2007-07-11
  • 打赏
  • 举报
回复
.net 提供 xml 的序列化以及反序列化
你可以直接使用 System.Xml.Serialization.XmlSerializer 完成此项功能
DEMO 在:
http://msdn2.microsoft.com/zh-cn/library/system.xml.serialization.xmlserializer(VS.80).aspx
ChengKing 2007-07-11
  • 打赏
  • 举报
回复
XML学习(Working with XML):
1.幻灯片课程

下载: http://www.cnblogs.com/Files/ChengKing/Working%20with%20XML(ppt).rar

2.示例代码

下载: http://www.cnblogs.com/Files/ChengKing/Working%20with%20XML(project).rar




http://blog.csdn.net/ChengKing/archive/2006/03/31/646363.aspx
通信相关 1.C#HttpHelper,Httpwebrequest,请求时无视编码,无视证书,无视Cookie,网页抓取 主要是实现了HTTP协议的GET|POST请求时的无视编码,无视证书,设置代理,自动获取Cookie的功能。 访问数据库相关 1.SqlHelper类 使用C#实现对Sql数据库的操作,执行存储过程,Sql语句,返回影响行数,返回DateTable,DataSet,DataReader,以及表集等方法。实现多个数据库的切换功能。功能强大,希望大家喜欢 2.一个操作Sql2005数据库的类(备份,还原,分离,附加,添加删除用户等操作) 这主要是为了让大家练手的,他使用C#代 码的方法实现了对数据的 备份,还原,分离,附加,添加和删除用户等操作 帮助类 1.最新的Functions 类 这里面实现了很多的帮助方法,比如正则验证,加密,解密,MD5加密,字符串的处理等操作。 2.最新的 PageValidate 类 主要是实现了验证,是否为空,是否为数字等。 3.JavascriptHelp 帮助输出简单的JS代码 4.最新的皮肤帮助类 UI_Misc_Helper JavaScript|Jquery相关 1.jQuery.cookie帮助类 访问系统相关 1.C#计算机信息类ComputerInfo 实现了计算机的信息获取功能,计算机名,IP,硬盘信息,网卡信息,操作系统信息等 2.Api_Win32_Mac类工具包 一个Win32的Api包,实现了大部分的Api操作帮助方法 3.在c#程序中放音乐的帮助类 使用C#播放音乐的帮助类,只需要调用方法就可以放音乐了 GDI+相关,图像相关1.生成缩略图的类文件SmallImage 一个把图片生成缩略图的类,可以设置大小,非常好用,希望大家喜欢哦。 C#基础类库1.Chart图形 Assistant创建显示图像的标签和文件 OWCChart统计图的封装类 2.Cookie&Session;&Cache;缓存帮助类 CacheHelper C#操作缓存的帮助类,实现了怎么设置缓存,怎么取缓存,怎么清理缓存等方法,只需要调用方法就可以实现 CookieHelper C#操作Cookie的帮助类,添加Cookie,删除Cookie,修改Cookie,清理Cookie SessionHelper C#关于Session的操作,获取Session,设置Session,删除Session使用方便,只需要调用方法就可以了 SessionHelper2 C#关于Session的一些高级操作,比如取Session对象,取Session数据等等 3.CSV文件转换 CsvHelper CSV文件导入DataTable和DataTable导出到Csv文件等操作 4.DEncrypt 加密/解密帮助类 DEncrypt C#DEncrypt加密/DEncrypt解密帮助类 ,多种方式,可以设置Key DESEncrypt C#DESEncrypt加密/DESEncrypt解密帮助类 ,多种方式,可以设置Key Encrypt C#Encrypt--Encrypt加密/Encrypt解密/附加有MD5加密,个人感觉很不错的一个加密类 HashEncode 哈希加密帮助类,得到随机哈希加密字符串,随机哈希数字加密等 MySecurity MySecurity--Security安全加密/Security Base64/Security文件加密,以及一些常用的操作方法 RSACryption RSACryption--RSA加密/RSA解密字符串 RSA加密应用最多是银行接口,这里的方法可以直接使用哦 5.FTP操作类 FTPClient   FTPClient--FTP操作帮助类,FTP上传,FTP下载,FTP文件操作,FTP目录操作 FTPHelper FTPHelper-FTP帮助类,FTP常用操作方法,添加文件,删除文件等 FTPOperater FTP操作帮助类,方法比较多,比较实用 6.JS操作类 JsHelper JsHelper--Javascript操作帮助类,输出各种JS方法,方便不懂JS的人使用,减少代码量 7.JSON 转化类 ConvertJson List转成

110,536

社区成员

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

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

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