跳到主要內容

XML 序列化(XmlSerializer) 用法

XmlSerializer 可以用幫助我們將文件或內容轉成 XML 格式,也可利用 Deserializer 方法轉回原先格式。以下提供一個飯粒範例說明:

C#:

using System.Xml.Serialization;
using XMLPractice;  // 自訂 namespace

namespace XMLPractice   
{

[XmlRoot("RootList")]
public class RootClass
{
     [XmlArray("AuthorList")]
        public Author[] At; // 包含了 Author 作者類別

     [XmlArray("List")]
        public Items[] Ie;  // 包含了 Items作者類別
 }

  public class AuthorEx
    {
        [XmlAttribute("id")] // 建立屬性 id
        public int ele_id;

        [XmlText()] // 建立內容 value 就是結果中的 皮皮、球球 二人組
        public string ele_name;
    }

    public class Items
    {
        [XmlText()]
        public string itmes_name;
    }
}


 try
{
     //Serialization of String Object  
    RootClass Rclass = new RootClass { At = new[] { new Author{ ele_id = 1, ele_name = "皮皮" },     new Author{ele_id = 2, ele_name = "球球"} } };
             
    Rclass.Ie = new[] { new Items { itmes_name = "Taipei" }, new Items { itmes_name =    "TaiChung"},new Items { itmes_name = "Kaoshung" } };

       FileStream stream = new FileStream("D:\\Example.txt", FileMode.Create, FileAccess.Write,
       FileShare.None);  // 建立文件檔
       XmlSerializer xmlserializer = new XmlSerializer(typeof(RootClass));  // 序列化 RootClass 類列物件
       xmlserializer.Serialize(stream, Rclass);
       stream.Close();
}

結果 ( 打開 D:\Example.txt 就可以看到如下的結果):

<?xml version="1.0"?>
<RootList>
<AuthorList>
<Author id="1">皮皮</Author>
<Author id="2">球球</Author>
</AuthorList>
<List>
<Item>Taipei</Item>
<Item>TaiChung</Item>
<Item>Kaoshung</Item>
</List>
</RootList>


留言

這個網誌中的熱門文章

C# 中 List 複製內容到另一個 List 的幾種方法

簡單又實用 ^ ^ * 第一種透過 .ToList( ) 方法:  List<string> List1 = new List<string>();  List<string> List2 = new List<string>();  List1.Add("A");  List1.Add("B");  List1.Add("C");  List1.Add("D"); List2 = List1.ToList( ); * 第二種方式在建立物件時複製前一個 List  List<string> List1 = new List<string>();  List1.Add("A");  List1.Add("B");  List1.Add("C");  List1.Add("D"); List<string> List2 = new List<string>(List1); * 第三種方法新的List 中使用 AddRange( ) 方法  List<string> List1 = new List<string>();  List<string> List2 = new List<string>();  List1.Add("A");  List1.Add("B");  List1.Add("C");  List1.Add("D"); List2.AddRange(List1); 另可使用 List1.GetRange(Start, End) 來複製不固定大小(但不包含End)的內容

無效的回傳或回呼引數。已在組態中使用 或在網頁中使用 <%@ Page EnableEventValidation="true" %> 啟用事件驗證

寫手機網頁 使用 Client 端的 jquery mobile 時 button 都會比較長,但改用 asp::Button 時發現按鈕大小卻變了,W3C 建議使用 jquery mobile Button 時,儘量使用<a href="#" data-role="button" > ,因此改用 asp::LinkButton 後果然解決了 Button 長度問題,只可惜按下去後,依然有點淚流滿面如下。後來拜求 google 大大,找到了原因及解法如下: 開啓了資料回傳安全驗證功能(EnableEventValidation 為 true),導致錯誤訊息產生。如果必須要驗證資料,則必須使用 ClientScriptManager.RegisterForEventValidation 註冊控制項或直接在頁面.aspx上端 <%Page ... EnableEventValidation = "false"> ,那如果全部頁面都不想驗證,那請在 web.config 下找到 <configuration>      <system.web>       <pages  enableEventValidation ="false" >        ....       </page>       .... </configuration> 嗯  博大精深  ^^ 收工回家去............................

JQUERY 中使用 val( ) 或 text( ) 來改變內容

就字眼看來兩者差別不太... 簡單的說 TextBox 利用 val( ),而其它的控制項元件則用 text( ) 底下範例可跑跑看或ID 對調實驗,很快就看出差別了... HTML: <input type="text" id="txtinupt" value="TEXTBOX"/> <label id="lblid">LABEL</label> <button onclick="TestFunc()">OK</button> JS: function TestFunc(){   $('#lblid').text("12345")   $('#txtinput').val("99999");   $('#lblid').focus();   console.log('Function End') }