作者KENyroj (难得一身鸡蛋糕...)
看板C_Sharp
标题Re: [问题] 读取XML
时间Mon Sep 8 09:53:17 2008
43
我好奇为什麽都没有人建议使用 XmlSerialize 呢??
我觉得还不错用啊... XD 是不是它有什麽缺点? [程式码太多吗 XD]
==== XML ====
<?xml version="1.0" encoding="utf-8"?>
<
event eventcode="30" >
<
msg text="Message 1" />
<
msg text="message 2" />
<
/event>
==== src 定义 XML ====
[XmlRoot("
event")]
public class EventXmlDef
{
[XmlAttribute("
eventcode")]
public int EventCode;
[XmlElement("
msg")]
public List<MsgXmlDef> Msg = new List<MsgXmlDef>();
}
[SerializableAttribute]
public class MsgXmlDef
{
public MsgXmlDef() {} // 定义自己的ctor时注意一定要有这个预设的ctor
public MsgXmlDef(string s) {Text=s;}
[XmlAttribute("
text")]
public string Text;
}
==== src 使用 XmlSerialization ====
// 物件转换成 XML 文件
EventXmlDef xml = new EventXmlDef();
xml.EventCode=30;
xml.Msg.Add(new MsgXmlDef("Message 1"));
xml.Msg.Add(new MsgXmlDef("Message 2"));
MemoryStream Mem = new MemoryStream();
using (XmlTextWriter XWriter = new XmlTextWriter(Mem, Encoding.UTF8))
{
XmlSerializer XmlSerial = new XmlSerializer(EventXmlDef);
XmlSerializerNamespaces XmlNamespance = new XmlSerializerNamespaces();
XmlNamespance.Add("", ""); // 加入一个空的 namespace 以避免它加了预设的
// xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
// xmlns:xsd="http://www.w3.org/2001/XMLSchema"
// 这两行不影响 XML 读取/解析功能, 可以不要
XmlSerial.Serialize(XWriter, xml, XmlNamespance);
XWriter.Close();
}
string XmlData = Encoding.UTF8.GetString(Mem.GetBuffer());
// XML 文件转换成 Xml物件
StringReader StrReader = new StringReader(XmlData);
XmlTextReader XmlReader = new XmlTextReader(StrReader);
XmlSerializer XmlSerial = new XmlSerializer(EventXmlDef);
EventXmlDef XmlObj = XmlSerial.Deserialize(XmlReader) as EventXmlDef;
__yroj 一点心得 恳请赐教
--
● 4
ˇBaseball 棒球 ◎中 5:4 加 罗国辉我爱你!!!
爆!AH977/mingch
【板主:AH977/mingchan/hel..】中 5:4 加 罗国辉我爱你!!! 看板《Baseball》
[←]离开 [→]阅读 [^P]发表文章 [b]备忘录 [d]删除 [z] [TAB]文摘 [h]说明
编号 日 期 作 者 文 章 标 题 人气:-32767
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.168.73.129
1F:推 tomex:除非有很大的效能帮助,否则用XmlReader好像比较快! 09/14 12:12