学习手记--怎样用c#处理xml文档.,学习手记怎样,习手记怎样用,手记怎样用c,记怎样用c#,怎样用c#处,-怎样用c#处理,怎样用c#处理x,样用c#处理xm,用c#处理xml,c#处理xml文,#处理xml文档

本站地址:http://www.bajiao123.com

学习手记--怎样用c#处理xml文档.
用c#处理xml文档.
本文章讲叙了怎样在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>
<h5> Viewer Details </h5>
</headertemplate>
<itemtemplate>
<br>
<table class=mainheads width=60% style=font: 8pt verdana >
<tr style=background-color:#FFFFCC>
<td>name:</td>
<td><%# DataBinder.Eval(Container.DataItem, name) %></td>
</tr>
<tr style=background-color:#FFFFCC>
<td>title:</td>
<td><%# DataBinder.Eval(Container.DataItem, title)%></td>
</tr>
<tr style=background-color:#FFFFCC>
<td>title2:</td>
<td><%# DataBinder.Eval(Container.DataItem, title2) %></td>
</tr>
</table><br>
</itemtemplate>
</ASP:Repeater>
</body>
</html>
---------
(4)把Repeater中的数据保存到Xml中,同理,你也可用于DataSet.
,例子中增加了新的一行,并把编辑后的结果保存到XML
<%@ Import Namespace=System %>
<%@ Import Namespace=System.IO %>
<%@ Import Namespace=System.Data %>
<%@ Page Language=C# Trace=true%>
<html>
<head>
<title>Saurabh's XML Counter Script</title>
<script language=C# runat=server>
public void Page_Load(Object obj,EventArgs e)
{
string dataFile=db/people.xml ;
if(!Page.IsPostBack)
{
try {
DataSet ds= new DataSet();
FileStream fint;
fint= new FileStream(Server.MapPath(dataFile), FileMode.Open, FileAccess.Read, FileShare.ReadWrite) ;
ds.ReadXml(fint);
fint.Close();
if(Session[counter]==null)
{
DataRow DR=ds.Tables[0].NewRow();
DR[name]=myname;
DR[title]=test;
DR[title2]=test2;
ds.Tables[0].Rows.Add(DR);
FileStream fOut ;
fOut = new FileStream(Server.MapPath(dataFile), FileMode.Open, FileAccess.Write, FileShare.ReadWrite) ;
ds.WriteXml(fOut, XmlWriteMode.WriteSchema);
fOut.Close();
Session[counter]=Set ;
}
Trace.Warn(表记录数,ds.Tables[0].Rows.Count.ToString());
}
catch(Exception edd)
{
Response.Write(<font color=#FF0000>+edd.ToString()+</font>) ;
}
}
}
</script>
</body>
</html>
----------------------
(5)读取URL里面的XML数据
C#读取URL里面的XML数据问题,正常情况下,都是读取静态的XML文件,但是在证券领域里面,XML数据是随时更新的。
比如第三方想我们提供XML数据,我们给第二方作开发,而第三提供给我们的是一个URL,这个URL是XML格式的内容,包含着我们要得数据。
这里例子是读取CSDN上的URL.
using System;
using System.Xml;
namespace ConsoleApplication5
{
class Class1
{
[STAThread]
static void Main(string[] args)
{
XmlDocument doc = new XmlDocument();
doc.Load(http://www.csdn.net/expert/to../../pic/1094/1094085.xml?temp=.9642145);
doc.Save(Console.Out );
}
}
}
这样,该C#程序就会把从远程ASP页面传过来的XML显示在Console.Out(控制台的输出)了.
进入问吧
本站地址:http://www.bajiao123.com

