日本国产亚洲-日本国产一区-日本国产一区二区三区-日本韩国欧美一区-日本韩国欧美在线-日本韩国欧美在线观看

當前位置:雨林木風下載站 > 技術開發教程 > 詳細頁面

對象化數據---學習Xml Serialization的一些體會

對象化數據---學習Xml Serialization的一些體會

更新時間:2022-05-04 文章作者:未知 信息來源:網絡 閱讀次數:

剛接觸.net時,就看到過一些用到Xml Serialization的例子,當時沒什么感覺。后來看了SDK和一些較大的程序后,逐漸有了點感覺。我個人感覺Xml Serialization 的最大好處是可以將一個xml文件對象化,比如說xml中的元素、屬性等都可以對應到對象、對象的屬性。這樣我們可以用對象的思想來操作數據,由于目前主流數據庫還只是關系型的(Oracle也只是部分面向對象),我們在數據層的操作顯得于其他層面有點隔。而Xml Serialization給了我們這樣一個用面向對象的思維來操作數據的可能。據個例子來說,比如說我們要做一個制作工作流程的程序,每個流程有n個階段,每個階段有n個人來完成。如果用數據庫做,就不可避免的涉及到多表關聯。這對于這樣一個數據量比較小的程序來說是一個浪費。我們來看一下怎么利用xml來做。

///示例xml文件
<?xml version="1.0"?>
<WorkflowData xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xmlns:xsd="http://www.w3.org/1999/XMLSchema">
<workflows>
<workflow name="請假流程" id="1">
<stages>
<stage name="主管核準" id="1" ordernum="1">
<users>
<user name="James" isAudit="1"/>
</users>
</stage>
</stages>
</workflow>
</workflows>
</WorkflowConfigData>

///示例cs文件
using System;
using System.Collections;
using System.IO;
using System.Text;
using System.Web;
using System.Xml.Serialization;

namespace Portal.Modules.Workflow
{
public class WorkflowConfig
{
public static WorkflowData Settings
{
get
{
HttpContext context = HttpContext.Current;
WorkflowData data = (WorkflowData) context.Cache["workflowconfig"];
if (data == null)
{
data = LoadSettings(WorkflowConfig.ConfigFilePath);
context.Cache.Insert("workflowconfig", data, new CacheDependency(WorkflowConfig.ConfigFilePath));
}
}
}

public static String ConfigFilePath
{
get
{
HttpContext context = HttpContext.Current;
return context.Server.MapPath(context.Request.ApplicationPath + "//" + "Workflow//workflow.xml");
}
}

public static WorkflowData LoadSettings(String fileName)
{
StreamReader reader = File.OpenText(fileName);
XmlSerializer serializer = new XmlSerializer(typeof(WorkflowData));
WorkflowData data = (WorkflowData)serializer.Deserialize(reader);
reader.Close();
return data;
}

public static void PersistSettings(WorkflowData data)
{
HttpContext context = HttpContext.Current;
String configFilePath = context.Server.MapPath(context.Request.ApplicationPath + "//Workflow//workflow.xml");
StreamWriter writer = File.CreateText(configFilePath);
XmlSerializer serializer = new XmlSerializer(typeof(WorkflowData));
serializer.Serialize(writer, data);
writer.Close();
}
}

public class WorkflowData
{
private Workflow[] _workflows;

[XmlArray]
public Workflow [] Workflows
{
get
{
return _workflows;
}
set
{
_workflows = value;
}
}

[XmlIgnore]
public Workflow this[int workflowID]
{
get
{
foreach(Workflow workflow in Workflows)
{
if(workflowID == workflow.ID)
{
return workflow;
}
}
return null;
}
}
}

public class Workflow
{
private String_name;
private int_id;
private Stage []_stages;

[XmlAttribute]
public String Name
{
get
{
return _name;
}
set
{
_name = value;
}
}

[XmlAttribute]
public int ID
{
get
{
return _id;
}
set
{
_id = value;
}
}

[XmlArray]
public Stage [] Stages
{
get
{
return _stages;
}
set
{
_stages = value;
}
}

[XmlIgnore]
public Stage this[int stageid]
{
get
{
foreach(Stage stage in Stages)
{
if(stageid == stage.ID)
{
return stage;
}
}
return null;
}
}
}

public class Stage
{
private int_id;
private String_name;
private int_orderNum;
private User []_users;

[XmlAttribute]
public String Name
{
get
{
return _name;
}
set
{
_name = value;
}
}

[XmlAttribute]
public int ID
{
get
{
return _id;
}
set
{
_id = value;
}
}

[XmlAttribute]
public int OrderNum
{
get
{
return _orderNum;
}
set
{
_orderNum = value;
}
}

[XmlArray]
public User [] Users
{
get
{
return _users;
}
set
{
_users = value;
}
}
}

public class User
{
private bool_isAudit;
private String_name;

public bool IsAudit
{
get
{
return _isAudit;
}
set
{
_isAudit = value;
}
}

public String Name
{
get
{
return _name;
}
set
{
_name = value;
}
}
}
}
這樣我們可以這樣來操作數據
workflow[0].stages[0].user[0] //得到用戶
類似的我就不說了。(上面的代碼不可以直接使用,由于涉及到公司,我刪了許多,只是演示而已)
這只是小弟的愚見,還望各位大蝦指正

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

主站蜘蛛池模板: 国产日韩高清一区二区三区 | www.五月天激情 | 日韩成人免费观看 | 亚洲天堂久久 | 欧美 日本 国产 | 欧美性xxxxxbbbbbb精品 | 天天干天天射天天爽 | 你懂的国产高清在线播放视频 | 久久99亚洲精品久久久久网站 | 男女性高爱潮久久 | 成人免费久久精品国产片久久影院 | 日韩新片在线观看网 | 天天做天天爱天天爽综合网 | 免费毛片二级c片观看动漫 免费毛片视频 | 99蜜臀噜噜噜在线视频观看 | 色天天躁夜夜躁天干天干 | 精品九九久久国内精品 | 日韩欧美一区二区三区不卡视频 | 在线观看国产精成人品 | 蜜臀91精品国产高清在线观看 | 欧美观看一级毛片 | 人与牲动交xxxxbbbb | 青草青青产国视频在线 | 伊人久久欧美综合精品 | 我要cao婊网国产 | 911精品国产自产在线观看 | 在线播放一区 | 日本黄a三级三级三级 | 免费国产之a视频 | 国产福利午夜波多野结衣 | 伊人97在线 | 婷婷色网站 | 欧美亚洲综合另类在线观看 | 香港三级日本三人妇孕妇 | 九九51精品国产免费看 | 二区免费视频 | 天天做人人爱夜夜爽2020 | 久久久久久久岛国免费播放 | 欧美日韩在线网站 | 亚洲国产精品v在线播放 | 中文字幕在线观看日本 |