程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 怎樣用c#處理xml文檔

怎樣用c#處理xml文檔

編輯:關於C#
 

本文章講敘了怎樣在c#裡處理xml文檔,都是些比較基本的。
首先,我們先自建一個xml文檔,如下:

<?xml version="1.0" encoding="UTF-8"?>
<peoplelist>
<person>
<name>Tom Stafford</name>
<title>CFO</title>
</person>
<person>
<name>Jane Goodwill</name>
<title>CEO</title>
</person>
<person>
<name>Tim Daly</name>
<title>CTO</title>
<title2>CTO0</title2>
</person>
<person>
<name>John Graver</name>
<title>CSO</title>
</person>
</peoplelist>

將其保存為:people.xml,:)

(1)查找XML文檔裡的指定節點
例如:要查找姓名為'Tim Daly'的用戶的<title2>,則具體程序如下.
----
<%@page language="C#"%>
<%@import namespace="System.Xml"%>
<%@import namespace="System.Xml.Xsl"%>
<%@import namespace="System.Xml.XPath"%>
<script language="c#" runat="server">
void page_load(Object obj,EventArgs e)
{
string xmlfile="people.xml",xpath;
xpath=Server.MapPath(xmlfile);
XmlDocument myDoc = new XmlDocument(); //定義一個XmlDocument對象。
myDoc.Load(xpath);
message.Text=myDoc.SelectSingleNode ("//person[name='Tim Daly']").ChildNodes.Item(2).InnerText;}
</script>
<asp:label id="message" forecolor="red" runat="server"/>

解釋:

其中//代表裡面任意層的子節點。這樣可以很快就找到所要的東西。
SelectSingleNode是找到一個單一的節點,SelectNodes可以找到許多節點


(2)用XML文檔填充列表框,這裡只用到<name>節點.

<%@ Page Language="C#" Debug="true" %>
<%@ Import Namespace="System.Collections" %>
<%@ Import Namespace="System.Xml" %>
<html>
<head>
<script language="C#" runat="server">
private void Page_Load(Object sender, EventArgs e)
{
if (!IsPostBack)
{
ArrayList values = new ArrayList();//將其當作數據源
XmlDocument doc = new XmlDocument();//表示XML文檔
doc.Load(Server.MapPath("people.xml"));

//返回一個XmlNodeList集合,包含與指定名稱匹配的所有子代元素列表
XmlNodeList elemList = doc.GetElementsByTagName("name");//System.Xml 命名空間

for (int i=0; i < elemList.Count; i++)
{
values.Add (elemList[i].InnerXml);
}
ListBox1.DataSource = values;
ListBox1.DataBind();
}
}

//得到列表項,被選中項的文本
private void SubmitBtn_Click(Object sender, EventArgs e)
{
if(ListBox1.SelectedIndex>-1)
Label1.Text = "Selected Option: " + ListBox1.SelectedItem.Text + "<p>";
}
</script>
</head>
<body>
<form runat=server>
<h3>Data Binding ListBox</h3>
<asp:Label id="Label1" font-name="Verdana" font-size="10pt" runat="server"/>
<asp:ListBox id="ListBox1" SelectionMode="Single" Rows="1" runat="server"/>
<asp:button id="Button1" Text="Submit" OnClick="SubmitBtn_Click" runat="server"/>
</form>
</body>
</html>
==============================================
(3)把XML文檔通過DataSet讀入到Repeater中.
你也可把它讀入到DataSet.原理是一樣的.
<%@ Import Namespace="System" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Data" %>
<%@ Page Language="C#" %>
<html>
<head>
<title>讀入到Repeater</title>
<script language="C#" runat=server>
public void Page_Load(Object obj,EventArgs e)
{
string xpath="db/people.xml" ;
try
{
DataSet ds= new DataSet();
FileStream fs= new FileStream(Server.MapPath(xpath),FileMode.Open,FileAccess.Read,FileShare.ReadWrite) ;
ds.ReadXml(new StreamReader(fs));
fs.Close();
Trace.Warn("表記錄數",Convert.ToString(ds.Tables[0].Rows.Count));

MyDataList.DataSource=ds.Tables[0].DefaultView;
MyDataList.DataBind();
}
catch (Exception ed)
{
Response.Write("<font color=#FF0000>"+ed.ToString()+"</font>") ;
}
}

</script>
</head>
<body >
<ASP:Repeater id="MyDataList" runat="server">
<headertemplate>  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved