欧美日韩一区二区三区四区不卡,日韩欧美视频一区二区三区四区,久久精品欧美一区二区三区不卡,国产精品久久久乱弄

咨詢電話:186 7916 6165 咨詢電話:186 7916 6165 (微信同號)    在線QQ:181796286
NEWS BLOG ·
學(xué)無止境
關(guān)注開優(yōu)網(wǎng)絡(luò) 關(guān)注前沿
ASP.NET 生成縮略圖、加水印
ASP.NET上傳文件

Linq To Xml (增,刪,改,查)

發(fā)表日期:2015-11-11    文章編輯:南昌開優(yōu)網(wǎng)絡(luò)    瀏覽次數(shù):4221    標(biāo)簽:ASP.NET應(yīng)用

XML數(shù)據(jù)如下:Test.xml

<?xml version="1.0" encoding="utf-8"?> 

<DataSet>    

  <dbName ID="b785723f-e7ef-448a-81b2-527de05f422a" Name="aaaaaa" Remarks="r-aa" />

  <dbName ID="53232faa-a069-46b1-8ff4-f5bf47db7a68" Name="bbbbb" Remarks="r-bbbb" />

</DataSet>

一、查詢

程序代碼:

XElement root = XElement.Load(Server.MapPath("Test.xml"));          //加載需要操作的XML文件

IEnumerable<XElement> tests =

    from el in root.Elements("dbName")                //查詢dbName節(jié)點 Elements 為節(jié)點

    where (string)el.Attribute("Remarks") == "r-aa" //條件:節(jié)點的Remarks屬性的值為 r-aaAttribute 為屬性

    select el;

foreach (XElement el in tests)                            //遍歷查詢結(jié)果

{

    Response.Write((string)el.Attribute("Name") + "<br>");  //輸出查詢節(jié)點的Name屬性的值

}

輸出結(jié)果:

aaaaaa

二、添加節(jié)點

程序代碼:

XElement root = XElement.Load(Server.MapPath("Test.xml"));  //加載需要操作的XML文件

root .Add(new XElement("newNode", "newNodes"));         //添加一個名為newNode,值為newNodes的節(jié)點

輸出結(jié)果:

<?xml version="1.0" encoding="utf-8"?>    

<DataSet>    

  <dbName ID="b785723f-e7ef-448a-81b2-527de05f422a" Name="aaaaaa" Remarks="r-aa" />

  <dbName ID="53232faa-a069-46b1-8ff4-f5bf47db7a68" Name="bbbbb" Remarks="r-bbbb" />

  <newNode>newNodes</newNode>  

</DataSet>

三、刪除節(jié)點

程序代碼:

XElement root = XElement.Load(Server.MapPath("Test.xml"));                //加載需要操作的XML文件

IEnumerable<XElement> tests =

    from el in root.Elements("dbName")                //查詢dbName節(jié)點

    where (string)el.Attribute("Remarks") == "r-aa"   //條件:節(jié)點的Remarks屬性的值為 r-aa

    select el;

foreach (XElement el in tests)                            //遍歷查詢結(jié)果

{

    el.RemoveNodes();  //刪除查詢節(jié)點的Name屬性的值

}

輸出結(jié)果:

<?xml version="1.0" encoding="utf-8"?>

<DataSet>       

  <dbName ID="53232faa-a069-46b1-8ff4-f5bf47db7a68" Name="bbbbb" Remarks="r-bbbb" />  

</DataSet>


四、修改節(jié)點

程序代碼:

XElement root = XElement.Load(Server.MapPath("Test.xml"));   //加載需要操作的XML文件

IEnumerable<XElement> tests =

    from el in root.Elements("dbName")                  //查詢dbName節(jié)點

    where (string)el.Attribute("Remarks") == "r-aa"  //條件:節(jié)點的Remarks屬性的值為 r-aa

    select el;

foreach (XElement el in tests)    //遍歷查詢結(jié)果

{

    el.SetValue("cccc");              //修改查詢節(jié)點的Name屬性的值

}

輸出結(jié)果:

<?xml version="1.0" encoding="utf-8"?>

<DataSet>

  <dbName ID="b785723f-e7ef-448a-81b2-527de05f422a" Name="cccc" Remarks="r-aa" />

  <dbName ID="53232faa-a069-46b1-8ff4-f5bf47db7a68" Name="bbbbb" Remarks="r-bbbb" />

</DataSet>


例子:

xml文件 xixi.xml 

<?xml version="1.0" encoding="utf-8"?>

<data>

<config>

    <roundCorner>0</roundCorner>


    <autoPlayTime>5</autoPlayTime>

    <isHeightQuality>false</isHeightQuality>

    <blendMode>normal</blendMode>


</config>

<channel>

    <item>

      <title>測試1</title>

      <image>/upload/20121031/4e43c84e-b4d5-4f72-98f1-68e9f92c76da.jpg</image>

      <link>http://www.baidu.com</link>

      <time>2012-10-31 15:34:12</time>

    </item>

    <item>

      <title>測試2</title>

      <image>/upload/20121031/7340b809-adc3-458f-a408-fb5bce3917c9.jpg</image>

      <link>bbab</link>

      <time>2012-10-31 15:38:14</time>

    </item>

</channel>

</data>

使用Linq操作channel節(jié)點中的item節(jié)點

1、Repeater控制綁定xml

if (!Page.IsPostBack)

{

    XmlDocument xml = new XmlDocument();        //創(chuàng)建xml對象

    xml.Load(HttpContext.Current.Server.MapPath("~/xml/xixi.xml"));    //打開xixi.xml文件

    rep.DataSource = xml.DocumentElement.SelectSingleNode("channel").ChildNodes;    //獲取SelectSingleNode指定節(jié)點的第一個下的所有節(jié)點

    rep.DataBind();

}

前臺顯示:

<asp:HiddenField ID="hfOpreate" Value="add" runat="server" />    //隱藏域用于判斷是添加還是修改

<asp:HiddenField ID="hftitle" runat="server" />                //隱藏域用于保存?zhèn)魅氲膖itle值

<%@import namespace="System.Xml"%>    //在前臺的aspx文件中引用Xml的命名空間

<asp:Repeater ID="rep" runat="server">

    <ItemTemplate>

        <tr>

            <td style="border-right: 1px solid #ccc;" align="center">               

                <%#((XmlNode)Container.DataItem).SelectSingleNode("title").InnerText%>    //獲取SelectSingleNode指定節(jié)點中的文本指

                <!--<%# ((XmlNode)Container.DataItem).Attributes["title"].Value %>-->    //獲取節(jié)點的Attributes屬性

            </td>

            <td style="border-right: 1px solid #ccc;" align="center">

                <img src='<%#((XmlNode)Container.DataItem).SelectSingleNode("image").InnerText%>' width="150px" height="93" />    //獲取圖片節(jié)點的文本

            </td>

            <td style="border-right: 1px solid #ccc;" align="center">

                <%#((XmlNode)Container.DataItem).SelectSingleNode("time").InnerText%>    //獲取時間節(jié)點的文本

            </td>

            <td align="center">

<asp:LinkButton ID="lbtnDel" CommandArgument='<%#((XmlNode)Container.DataItem).SelectSingleNode("title").InnerText%>' OnClientClick="return confirm('確定刪除嗎?');" runat="server" OnClick="del">刪除</asp:LinkButton>

<asp:LinkButton ID="lbtnRep" OnClick="edit" CommandArgument='<%#((XmlNode)Container.DataItem).SelectSingleNode("title").InnerText %>' runat="server">修改</asp:LinkButton>

            </td>

        </tr>

    </ItemTemplate>

</asp:Repeater>

后臺:

protected void Page_Load(object sender, EventArgs e)

{

    if (!Page.IsPostBack)

    {

        XmlDocument xml = new XmlDocument();

        xml.Load(HttpContext.Current.Server.MapPath("~/xml/xixi.xml"));    //打開文本

        rep.DataSource = xml.DocumentElement.SelectSingleNode("channel").ChildNodes;    //綁定指定節(jié)點下的所有子節(jié)點

        rep.DataBind();

    }

}

//上傳

protected void btnUpload_Click(object sender, EventArgs e)

{

    try

    {

        string fimg = Xiaobin.Utility.Tool.Upload(fuimg, new string[] { ".jpg", ".png" }, 1, Server.MapPath("../upload/"));

        img.ImageUrl = "../upload/" + fimg;

        img.ToolTip = fimg;

    }

    catch (Exception ex)

    {

        Xiaobin.Utility.Tool.Alert(ex.Message, this.Page);

    }

}

//保存

protected void btnAdd_Click(object sender, EventArgs e)

{

    string title = txttitle.Text.Trim();

    string image = "/upload/" + img.ToolTip;        //加上upload保存到xml文件中

    string link = txtlink.Text.Trim();

    if (title.Length == 0 || image.Length == 0 || link.Length == 0)

    {

        Xiaobin.Utility.Tool.Alert("請輸入完整再提交", this.Page);

        return;

    }

    XElement element = XElement.Load(Server.MapPath("/xml/xixi.xml"));   //打開文件

    if (hfOpreate.Value == "add")   //添加

    {


    IEnumerable<XElement> tests =



        from el in element.Elements("channel").Elements("item")                //查詢channel節(jié)點下的item節(jié)點



        where (string)el.Element("title") == title                           //條件:節(jié)點的title屬性的值為輸入的title值



        select el;



    foreach (XElement el in tests)                            //遍歷查詢結(jié)果



    {



        Xiaobin.Utility.Tool.Alert("標(biāo)題重復(fù)了", this.Page);        //因為刪除和修改都是傳入title所有。title必須是唯一的 .即查找



        return;



    }


    XElement owenr = new XElement("item", new XElement[]{       //找到item節(jié)點并添加子節(jié)點

    new XElement("title",title),         //節(jié)點title

    new XElement("image",image),//節(jié)點image

    new XElement("link",link),                                        //節(jié)點link

    new XElement("time",DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")), //節(jié)點time

    });

        element.Element("channel").Add(owenr); //xml文件的channel節(jié)點中加上item節(jié)點

    }


string t = hftitle.Value;        //改



if (hfOpreate.Value == "edit")



{



    IEnumerable<XElement> tests =



        from el in element.Elements("channel").Elements("item")



        where (string)el.Element("title") == t                                     //通過hftitle的值查詢出xml節(jié)點中的title節(jié)點,用于修改



        select el;                                                                            //element為xml文件.el為查詢出的結(jié)果節(jié)點



    foreach (XElement el in tests)



    {



        el.Element("title").Value = title;



        el.Element("image").Value = image;



        el.Element("link").Value = link;                 



    }



}

element.Save(Server.MapPath("/xml/xixi.xml"));    //保存


    Xiaobin.Utility.Tool.AlertAndGo("添加成功", Request.Url.ToString(), this.Page);

}

//刪除

protected void del(object sender, EventArgs e)

{

    string title = (sender as LinkButton).CommandArgument;        //獲取傳入的值

    XElement element = XElement.Load(Server.MapPath("/xml/xixi.xml"));                //加載需要操作的XML文件

    IEnumerable<XElement> tests =

        from el in element.Elements("channel").Elements("item")                //查詢channel節(jié)點下的item節(jié)點

        where (string)el.Element("title") == title                          //條件:節(jié)點的title屬性的值為輸入的文本title值

        select el;

    foreach (XElement el in tests)                            //遍歷查詢結(jié)果

    {

        el.Remove();        //移除該節(jié)點

    }

    element.Save(Server.MapPath("/xml/xixi.xml"));    //保存

    Xiaobin.Utility.Tool.AlertAndGo("添加成功", Request.Url.ToString(), this.Page);

}

//修改

protected void edit(object sender, EventArgs e)

{

    string title = (sender as LinkButton).CommandArgument;        //獲取傳入的title

    hfOpreate.Value = "edit";     //修改事件

    hftitle.Value = title;            //用隱藏域存儲title用于修改事件

    XElement element = XElement.Load(Server.MapPath("/xml/xixi.xml"));    //打開文件

    IEnumerable<XElement> tests =

        from el in element.Elements("channel").Elements("item")

        where (string)el.Element("title") == title                    //查詢節(jié)點并判斷

        select el;

    foreach (XElement el in tests)

    {

        txtlink.Text = el.Element("link").Value;        //前臺的TextBox重新賦值

        txttitle.Text = el.Element("title").Value;

        img.ToolTip = el.Element("image").Value;

        img.ImageUrl = "../upload/" + el.Element("image").Value;    

    }

}

簡單的綁定Repeater控件


<?xml version="1.0" encoding="UTF-8"?>     //XML文件 <ThreadList Count="476" fid="103"> <Thread tid="396133" uid="279005" subject="含義和用法即"></Thread> <Thread tid="396132" uid="279005" subject="字母詮釋下的夏奈爾></Thread>
<ThreadList>



XmlDocument doc = new XmlDocument();            //.cs代碼
doc.LoadXml("xml"); this.repTopicList.DataSource = doc.DocumentElement.ChildNodes; this.repTopicList.DataBind();
<%@ Import Namespace="System.Xml"%>            //前臺顯示 <asp:Repeater ID="repTopicList" runat="server">  <ItemTemplate> <span><%# ((XmlNode)Container.DataItem).Attributes["subject"].Value%><span><br /> </ItemTemplate></asp:Repeater>
主站蜘蛛池模板: 衡阳县| 阿巴嘎旗| 双流县| 阳城县| 湄潭县| 财经| 宜宾县| 长武县| 城市| 沽源县| 田东县| 犍为县| 贞丰县| 通许县| 郯城县| 吉木萨尔县| 社会| 彩票| 颍上县| 廉江市| 寿光市| 军事| 潞西市| 日照市| 邢台县| 长兴县| 天峻县| 衢州市| 平乐县| 彭州市| 鹰潭市| 马鞍山市| 镇坪县| 穆棱市| 阜城县| 花垣县| 全南县| 萨嘎县| 祁东县| 百色市| 娱乐|