ASP.NET中根據XML動態創建并使用WEB組件(一)
2024-07-10 12:57:18
供稿:網友
asp.net中根據xml動態創建使用web組件
(一)
作者:厲鐵帥
前段時間筆者在開發中需要動態創建web組件,本以為是小事一樁,誰知看時容易做時難。里面還真有些小問題。下面筆者就結合自己的程序來介紹一下如何動態創建并使用web組件,希望能給做類似工作的朋友提供一點幫助。
一、程序思路
程序主要分三部分:
1、程序要根據xml中的數據信息確定需要創建的web組件的個數。
2、動態創建web組件。
3、使用動態創建的web組件。
其中2和3是筆者要重點介紹的部分。
下面筆者就按照這三部分結合程序實例(以c#為例)來一一介紹。
二、讀取xml文件
讀取xml文件在很多的資料中都有詳細的說明,而且相信很多朋友都已經很好的掌握了其技術。但為了保證文章的完整性,筆者在這里還是要贅述幾句。深諧其味的朋友可以略過此段不看。
筆者程序中要讀取的xml文件形如下列:
config.xml
<?xml version="1.0"?>
<root>
<nettype>net</nettype>
<totalnum>6</totalnum>
<cells>2</cells>
<iplink>
<name>站點1</name>
<ip>192.8.198.1</ip>
<sequence>1</sequence>
</iplink>
<iplink>
<name>站點2</name>
<ip>192.8.198.2</ip>
<sequence>2</sequence>
</iplink>
… …
</root>
讀取xml文件的程序如下:
protected void readconfig()
{
try
{
system.xml.xmldocument mxmldoc=new system.xml.xmldocument();
mxmldoc.load(server.mappath(configfilepath));
nettype=mxmldoc.selectnodes("//root/nettype")[0].innertext; totalnum=int.parse(mxmldoc.selectnodes("//root/totalnum")[0].innertext);
//讀出列數
cells=int.parse(mxmldoc.selectnodes("//root/cells")[0].innertext);
xmlnodelist mxmlnodes=mxmldoc.selectnodes("//root/iplink");
foreach(xmlnode iplinkchildlnode in mxmlnodes)
{
//得到序列號
int icount=int.parse(iplinkchildlnode.childnodes[2].innertext);
//根據序列號,將測量點的名稱放入名稱數組相應的位置上
namestr[icount]=iplinkchildlnode.childnodes[0].innertext;
//根據序列號,將測量點的ip放入ip數組相應的位置上
ipstr[icount]=iplinkchildlnode.childnodes[1].innertext;
}
}
catch
{
errmessage.innerhtml="<table align=center><tr>
<td align=left><font color=red>不能讀取配置文件,可能的錯誤是<br>"+"1、配置文件不存在<br>"+
"2、配置文件內容被損壞"+
"</font></td></tr></table>";
}
}
程序中對xml中無子節點的元素如:
<nettype>net</nettype>
直接使用如下語句讀取。
mxmldoc.selectnodes("//root/nettype")[0].innertext;
對于有子節點的元素如:
<iplink>
<name>站點1</name>
<ip>192.8.198.1</ip>
<sequence>1</sequence>
</iplink>
要使用語句如下來讀取。
iplinkchildlnode.childnodes[n].innertext
其中 childnodes[n] 中的[n]為子節點的序號,子節點
<name>站點1</name>
的序號應該為[0]。