国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > 建站經(jīng)驗(yàn) > 正文

利用XML序列化實(shí)現(xiàn)程序_配置文件

2019-11-02 15:49:11
字體:
供稿:網(wǎng)友

 有些應(yīng)用程序在退出的時候,會將一些設(shè)置值寫入到文件里,以便下次程序啟動時調(diào)用,這個文件統(tǒng)稱為配置文件。例如:Windows的掃雷程序,在每次啟動的時候,都會出現(xiàn)在上次關(guān)閉的位置,就是因?yàn)閽呃壮绦蛟谕顺龅臅r候?qū)?dāng)前位置寫入到配置文件里。


早期的配置文件的實(shí)現(xiàn)有兩種方法。一是INI文件,在Win32的API中還專門有讀寫INI文件的API函數(shù);另一個是注冊表,這也是很多程序的首選,在版本較新的掃雷程序就是利用注冊表實(shí)現(xiàn)配置函數(shù)。不過,上述的兩種方法都有其的局限性。INI文件,結(jié)構(gòu)簡單,容易編輯,有容量的上限(64K)。注冊表雖然沒有容量的限制,不過讀寫注冊表還是一件很麻煩的事,而且還容易在注冊表中產(chǎn)生冗余(刪除程序的時候還得操作

順口溜[www.62-6.com/1/marenbaodian/]
注冊表),也有和其他程序想沖的可能。最主要的問題就是,無論是INI文件還是注冊表都只能實(shí)現(xiàn)簡單的配置讀寫,很難實(shí)現(xiàn)類似對象的讀寫,因?yàn)樗麄兊臈l目之間是平行的,而不是類似樹狀的節(jié)點(diǎn)結(jié)構(gòu)(注冊表雖能實(shí)現(xiàn)樹狀結(jié)構(gòu),但是讀寫還是比較麻煩,也不太安全)。

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

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

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

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

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

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

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

1. 待序列化的類層次結(jié)構(gòu)
[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;

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 建德市| 永安市| 汾阳市| 淄博市| 漳浦县| 启东市| 萍乡市| 长海县| 巴中市| 五家渠市| 大冶市| 怀宁县| 濮阳县| 新竹县| 宝清县| 韶关市| 乐山市| 商水县| 东安县| 巨野县| 怀远县| 赤峰市| 和田市| 揭西县| 南康市| 镇雄县| 进贤县| 蕉岭县| 崇明县| 高州市| 庄河市| 绥棱县| 阜南县| 伽师县| 五原县| 潼关县| 蓬莱市| 洛南县| 昌图县| 铜梁县| 建始县|