VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > Objective-C编程 >
  • c#操作XML初步 5

制作者:剑锋冷月 单位:无忧统计网,www.51stat.net
 

  使用C#来编辑XML文件,最方便的方法当然还是使用DATASET

  我们继续使用上一篇中的XML文件,如下:

<users>
 <xs:schema id="users" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
  <xs:element name="users" msdata:IsDataSet="true" msdata:Locale="zh-CN">
   <xs:complexType>
    <xs:choice maxOccurs="unbounded">
     <xs:element name="user">
      <xs:complexType>
       <xs:sequence>
        <xs:element name="userName" type="xs:string" minOccurs="0" msdata:Ordinal="0" />
        <xs:element name="userPass" type="xs:string" minOccurs="0" msdata:Ordinal="1" />
       </xs:sequence>
       <xs:attribute name="id" type="xs:string" />
      </xs:complexType>
     </xs:element>
    </xs:choice>
   </xs:complexType>
  </xs:element>
 </xs:schema>
 <user id="1">
  <userName>outrace</userName>
  <userPass>mypass</userPass>
 </user>
 <user id="2">
  <userName>trace</userName>
  <userPass>mypass</userPass>
 </user>
 <user id="3">
  <userName>new user</userName>
  <userPass>new passwd</userPass>
 </user>
</users>

 

  则,我们新建一个XML文件,内容如下:

<% @ Import Namespace="System.IO" %>
<% @ Import Namespace="System.Xml" %>
<% @ Import Namespace="System.Data" %>
<script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
  /*
* 版 权 : copyright by SEM IT DEPARTMENT
* 版 本 : version 0.0.1
* 文 件 : EditXml.aspx
* 用 途 : 编辑XML文件(修改、删除行)
* 作 者 : 欧阳云天 @2005-4-9
* 邮 箱 : outrace@soueast-motor.com
* 修 改 :
*/
  
  String fileName;
fileName = "users_2.xml";
DataSet myDs = new DataSet();
try
{
 FileStream fin ;
 fin = new FileStream(Server.MapPath("./files/"+fileName), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
 myDs.ReadXml(fin);
 fin.Close(); 
}
catch (Exception ex)
{
   Response.Write(ex.Message);
}
  
//绑定修改前的XML
OldData.DataSource = myDs.Tables[0].DefaultView;
OldData.DataBind();
  
  //当DS当中增加新行
DataRow newRow = myDs.Tables[0].NewRow();
newRow["id"] = "44";
newRow["userName"] = "test user";
newRow["userPass"] = "test passwd";
myDs.Tables[0].Rows.Add(newRow);
  
  //绑定新增一条记录的数据
NewData.DataSource = myDs.Tables[0].DefaultView;
NewData.DataBind();
  
  //进行过滤
  DataRow[] editRow = myDs.Tables[0].Select("id = '44'");
  
for(int i=0;i<editRow.Length;i++)
{
  editRow[i]["userName"] = "changed user";
  editRow[i]["userPass"] = "changed passwd";
}
  
  //绑定修改记录后的数据
EditData.DataSource = myDs.Tables[0].DefaultView;
EditData.DataBind();
  
for(int i=0;i<editRow.Length;i++)
{
  editRow[i].Delete();  //把该数据删除
}
  
  //绑定删除记录后的数据
DeleData.DataSource = myDs.Tables[0].DefaultView;
DeleData.DataBind();
  
  //将myDs的改变写入XML
try
{
 myDs.WriteXml(Server.MapPath("./files/"+fileName), XmlWriteMode.WriteSchema);
}
catch (Exception ex)
{
   Response.Write(ex.Message);
}
  
myDs.Dispose();
}
</script>
  
<html>
  
<head>
 <title>编辑数据</title>
</head>
  
<body>
 <form runat="server">
 <table width="100%">
  <tr>
  <td>原数据</td>
  <td>新增行</td>
  <td>修改行</td>
  <td>删除行</td>
  </tr>
  <tr>
  <td valign="top"><asp:DataGrid id="OldData" runat="server"/></td>
  <td valign="top"><asp:DataGrid id="NewData" runat="server"/></td>
  <td valign="top"><asp:DataGrid id="EditData" runat="server"/></td>
  <td valign="top"><asp:DataGrid id="DeleData" runat="server"/></td>
  </tr>
 </table>
 </form>
</body>
  
</html>

 

  大家运行完这个文件,就可以非常直观的看到操作效果,由于我们是最后才保存,所以XML文件的内容没有发生改变

 

 

  则,我们新建一个XML文件,内容如下:

<% @ Import Namespace="System.IO" %>
<% @ Import Namespace="System.Xml" %>
<% @ Import Namespace="System.Data" %>
<script Language="C#" Runat="Server">
public void Page_Load(Object src,EventArgs e)
{
  /*
* 版 权 : copyright by SEM IT DEPARTMENT
* 版 本 : version 0.0.1
* 文 件 : EditXml.aspx
* 用 途 : 编辑XML文件(修改、删除行)
* 作 者 : 欧阳云天 @2005-4-9
* 邮 箱 : outrace@soueast-motor.com
* 修 改 :
*/
  
  String fileName;
fileName = "users_2.xml";
DataSet myDs = new DataSet();
try
{
 FileStream fin ;
 fin = new FileStream(Server.MapPath("./files/"+fileName), FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
 myDs.ReadXml(fin);
 fin.Close(); 
}
catch (Exception ex)
{
   Response.Write(ex.Message);
}
  
//绑定修改前的XML
OldData.DataSource = myDs.Tables[0].DefaultView;
OldData.DataBind();
  
  //当DS当中增加新行
DataRow newRow = myDs.Tables[0].NewRow();
newRow["id"] = "44";
newRow["userName"] = "test user";
newRow["userPass"] = "test passwd";
myDs.Tables[0].Rows.Add(newRow);
  
  //绑定新增一条记录的数据
NewData.DataSource = myDs.Tables[0].DefaultView;
NewData.DataBind();
  
  //进行过滤
  DataRow[] editRow = myDs.Tables[0].Select("id = '44'");
  
for(int i=0;i<editRow.Length;i++)
{
  editRow[i]["userName"] = "changed user";
  editRow[i]["userPass"] = "changed passwd";
}
  
  //绑定修改记录后的数据
EditData.DataSource = myDs.Tables[0].DefaultView;
EditData.DataBind();
  
for(int i=0;i<editRow.Length;i++)
{
  editRow[i].Delete();  //把该数据删除
}
  
  //绑定删除记录后的数据
DeleData.DataSource = myDs.Tables[0].DefaultView;
DeleData.DataBind();
  
  //将myDs的改变写入XML
try
{
 myDs.WriteXml(Server.MapPath("./files/"+fileName), XmlWriteMode.WriteSchema);
}
catch (Exception ex)
{
   Response.Write(ex.Message);
}
  
myDs.Dispose();
}
</script>
  
<html>
  
<head>
 <title>编辑数据</title>
</head>
  
<body>
 <form runat="server">
 <table width="100%">
  <tr>
  <td>原数据</td>
  <td>新增行</td>
  <td>修改行</td>
  <td>删除行</td>
  </tr>
  <tr>
  <td valign="top"><asp:DataGrid id="OldData" runat="server"/></td>
  <td valign="top"><asp:DataGrid id="NewData" runat="server"/></td>
  <td valign="top"><asp:DataGrid id="EditData" runat="server"/></td>
  <td valign="top"><asp:DataGrid id="DeleData" runat="server"/></td>
  </tr>
 </table>
 </form>
</body>
  
</html>

 

  大家运行完这个文件,就可以非常直观的看到操作效果,由于我们是最后才保存,所以XML文件的内容没有发生改变

 



相关教程