電子公文是指製作與公務相關之公文書,用於機關間往來交換資訊之文件。
而公文類別則分為「令」、「呈」、「咨」、「函」、「公告」及「其他公文」6種。
電子公文是指製作與公務相關之公文書,用於機關間往來交換資訊之文件。
而公文類別則分為「令」、「呈」、「咨」、「函」、「公告」及「其他公文」6種。
參考自 : 公文e網通
我們在這利用 ASP.NET 來試作個簡單應用
1) 首先建立 [電子公文Sample] 方案
使用 [ASP.NET Web 應用程式] 範本
2) 利用 XML 建立類別宣告
參考 : XML序列化與反序列化
a. 首先將取得的 93_2.di 置入本方案中, 並更名為 93_2.xml
a. 因手邊未取得 DTD 及相關參照資料… 故先將 <!DOCTYPE… 用 <!-- --> 註解起來
b. 再開啟 Visual Studio Command Prompt (2010)
c. 切換到方案目錄下, 輸入如下列
D:\電子公文Sample\電子公文Sample>xsd 93_2.xmlD:\電子公文Sample\電子公文Sample>xsd 93_2.xsd /Classes來建立 XML 的類別宣告
d. 並將建立後的 xsd( XML Schema Definition ) 及 cs ( 本方案用 XML 函式庫 ) 檔置入方案中
f. 開啟 [93_2.xsd] 即可看到如下列的圖型化的 XML 綱要定義,
圖型化的顯示可以方便我們進行簡單的分析及資料拆解…
3) 設計網頁介面
在這邊只是簡單的拉了兩個控制項
資料輸入FileUpload 類別
資料呈現 Literal 類別
頁面 Tag
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="電子公文Sample._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
上傳 di 檔<br />
<asp:FileUpload ID="FileUpload1" runat="server" />
<asp:Button ID="Button1" runat="server" Text="解析" OnClick="Button1_Click" />
<br />
解析顯示如下<br />
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
後端 Source Code (C#)
參考 : Saving and Loading Data: XmlSerializer
using System;
using System.IO;
using System.Text;
using System.Web.UI.WebControls;
using System.Xml.Serialization;
namespace 電子公文Sample
{
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
FileUpload FUpload = FindControl("FileUpload1") as FileUpload;
StreamReader SReader = new StreamReader(FUpload.PostedFile.InputStream, Encoding.Default);
XmlSerializer serializer = new XmlSerializer(typeof(函));
函 _函 = serializer.Deserialize(SReader) as 函;
StringBuilder SB = new StringBuilder();
SB.Append("函<br/>");
SB.Append("|發文機關<br/>");
SB.Append("|─全銜 = " + _函.發文機關[0].全銜.ToString() + "<br/>");
SB.Append("|─發文機關 = " + _函.發文機關[0].機關代碼.ToString() + "<br/>");
SB.Append("|函類別<br/>");
SB.Append("|─代碼 = " + _函.函類別[0].代碼.ToString() + "<br/>");
SB.Append("|地址 = " + _函.地址.ToString() + "<br/>");
SB.Append("|聯絡方式<br/>");
for (int i = 0; i < _函.聯絡方式.Length; i++)
{
SB.Append("|─ " + _函.聯絡方式[i].Value.ToString() + "<br/>");
}
SB.Append("|受文者<br/>");
SB.Append("|─全銜 = " + _函.受文者[0].全銜.ToString() + "<br/>");
SB.Append("|─含附件 = " + _函.受文者[0].含附件.ToString() + "<br/>");
SB.Append("|─機關代碼 = " + _函.受文者[0].機關代碼.ToString() + "<br/>");
SB.Append("|發文日期<br/>");
SB.Append("|─年月日 = " + _函.發文日期[0].年月日.ToString() + "<br/>");
SB.Append("|發文字號<br/>");
SB.Append("|─文號<br/>");
SB.Append("|─文號.年度 = " + _函.發文字號[0].文號[0].年度.ToString() + "<br/>");
SB.Append("|─文號.流水號 = " + _函.發文字號[0].文號[0].流水號.ToString() + "<br/>");
SB.Append("|─字 = " + _函.發文字號[0].字.ToString() + "<br/>");
SB.Append("|速別<br/>");
SB.Append("|─代碼 = " + _函.速別[0].代碼.ToString() + "<br/>");
SB.Append("|密等及解密條件或保密期限<br/>");
SB.Append("|密等 = " + _函.密等及解密條件或保密期限[0].密等.ToString() + "<br/>");
SB.Append("|解密條件或保密期限 = " + _函.密等及解密條件或保密期限[0].解密條件或保密期限.ToString() + "<br/>");
SB.Append("|附件<br/>");
SB.Append("|─文字 = " + _函.附件[0].文字.ToString() + "<br/>");
SB.Append("|─附件檔名 = " + _函.附件[0].附件檔名.ToString() + "<br/>");
SB.Append("|主旨<br/>");
SB.Append("|─文字 = " + _函.主旨[0].文字.ToString() + "<br/>");
SB.Append("|段落<br/>");
SB.Append("|─段名 = " + _函.段落[0].段名.ToString() + "<br/>");
SB.Append("|─文字 = " + _函.段落[0].文字.ToString() + "<br/>");
SB.Append("|正本<br/>");
SB.Append("|─全銜 = " + _函.正本[0].全銜.ToString() + "<br/>");
SB.Append("|署名 = " + _函.署名.ToString() + "<br/>");
Literal Show = FindControl("Literal1") as Literal;
Show.Text = SB.ToString();
}
}
}
即簡單的設計出公文資料解析介面
輸入 :
輸出 :