查看文章
 
C#对XML操作:使用DATASET编辑XML文件内容
2008-04-05 8:48
<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>

.aspx

<% @ 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>


类别:.net(c#)||添加到搜藏 |分享到i贴吧|浏览(3334)|评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
     

   
帮助中心 | 空间客服 | 投诉中心 | 空间协议
©2012 Baidu