推 tomex:除非有很大的效能幫助,否則用XmlReader好像比較快! 09/14 12:12
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