利用XML序列化實現(xiàn)程序配置文件
來源:易賢網(wǎng) 閱讀:672 次 日期:2015-02-27 10:46:47
溫馨提示:易賢網(wǎng)小編為您整理了“利用XML序列化實現(xiàn)程序配置文件”,方便廣大網(wǎng)友查閱!

有些應用程序在退出的時候,會將一些設置值寫入到文件里,以便下次程序啟動時調用,這個文件統(tǒng)稱為配置文件。例如:Windows的掃雷程序,在每次啟動的時候,都會出現(xiàn)在上次關閉的位置,就是因為掃雷程序在退出的時候將當前位置寫入到配置文件里。

早期的配置文件的實現(xiàn)有兩種方法。一是INI文件,在Win32的API中還專門有讀寫INI文件的API函數(shù);另一個是注冊表,這也是很多程序的首選,在版本較新的掃雷程序就是利用注冊表實現(xiàn)配置函數(shù)。不過,上述的兩種方法都有其的局限性。INI文件,結構簡單,容易編輯,有容量的上限(64K)。注冊表雖然沒有容量的限制,不過讀寫注冊表還是一件很麻煩的事,而且還容易在注冊表中產(chǎn)生冗余(刪除程序的時候還得操作注冊表),也有和其他程序想沖的可能。最主要的問題就是,無論是INI文件還是注冊表都只能實現(xiàn)簡單的配置讀寫,很難實現(xiàn)類似對象的讀寫,因為他們的條目之間是平行的,而不是類似樹狀的節(jié)點結構(注冊表雖能實現(xiàn)樹狀結構,但是讀寫還是比較麻煩,也不太安全)。

而利用XML文件就能很好的彌補上面的不足。首先是文件型的,不會讀寫注冊表,不會有安全的后顧之憂;其次沒有文件容量大小的限制,而且XML文件天生是樹狀結構,很適合實現(xiàn)對象的讀寫。目前XML文件的應用越來越廣泛,已經(jīng)成為主流,你隨便打開一個程序所在的目錄,很少不看到XML文件的,而且主流的開發(fā)軟件都有讀寫XML的庫文件。操作XML文件現(xiàn)在是很便利的一件事。

XML文件序列化是XML技術的一個分支,他可以把程序中的一個對象(例如自己編寫的類的一個實例)序列化成XML文件。他也可以把XML文件反序列化為程序中的一個對象。

有關XML序列化比較好的文章,我個人感覺下面這篇比較好。

NET對象的XML序列化和反序列化

這就給了我們的一個思路,我們可以把要讀寫的配置封裝在自己編寫的配置類中,然后通過XML序列化,來實現(xiàn)配置類和XML文件的轉化。

例如:下面這個例子就是利用XML序列化在類對象和XML之間轉換,用的是C#

下面例子中的xml schema 描述了一個簡單的人力資源信息,其中包含了xml的大部分格式,如xml 元素相互嵌套, xml元素既有元素值,又有屬性值。

1. 待序列化的類層次結構

[XmlRoot("humanResource")]public class HumanResource

{

private int m_record = 0;

private Worker[] m_workers = null;

[XmlAttribute(AttributeName="record")]public int Record

{

get { return m_record; }

set { m_record = value;

}

[XmlElement(ElementName="worker")]public Worker[] Workers

{

get { return m_workers; }

set { m_workers = value; }

}

}

public class Worker

{

private string m_number = null;

private InformationItem[] m_infoItems = null;

[XmlAttribute("number")]public string Number

{

get { return m_number; }

set { m_number = value; }

}

[XmlElement("infoItem")]public InformationItem[] InfoItems

{

get { return m_infoItems; }

set { m_infoItems = value; }

}

}

public class InformationItem

{

private string m_name = null;

private string m_value = null;

[XmlAttribute(AttributeName = "name")]public string Name

{

get { return m_name; }

set { m_name = value; }

}

[XmlText]public string Value

{

get { return m_value; }

set { m_value = value; }

}

}

2. 序列化生成的xml結構

<?xml version="1.0" ?>

<humanResource xmlns:xsi="" xmlns:xsd="" record="2">

<worker number="001">

<infoItem name="name">Michale</infoItem>

<infoItem name="sex">male</infoItem>

<infoItem name="age">25</infoItem>

</worker>

<worker number="002">

<infoItem name="name">Surce</infoItem>

<infoItem name="sex">male</infoItem>

<infoItem name="age">28</infoItem>

</worker>

</humanResource>

更多信息請查看IT技術專欄

更多信息請查看網(wǎng)絡編程
易賢網(wǎng)手機網(wǎng)站地址:利用XML序列化實現(xiàn)程序配置文件

2025國考·省考課程試聽報名

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網(wǎng)