• XML简单操作


    关注博客园这么久,这是我写的第一篇博客!希望通过这个方式,将自己的一点一滴记录下来!

    这篇博客主要讲讲自学xml的经验,主要是在asp.net中操作xml.涉及添加节点,删除节点,模糊查询,修改等;

    后台代码:

    View Code
      1 using System;
      2 using System.Collections;
      3 using System.Configuration;
      4 using System.Data;
      5 using System.Linq;
      6 using System.Web;
      7 using System.Web.Security;
      8 using System.Web.UI;
      9 using System.Web.UI.HtmlControls;
     10 using System.Web.UI.WebControls;
     11 using System.Web.UI.WebControls.WebParts;
     12 using System.Xml.Linq;
     13 using System.Xml;
     14 using System.Xml.Xsl;
     15 using System.Text;
     16 
     17 
     18 public partial class XML_xmlTest : System.Web.UI.Page
     19 {
     20     private XmlDocument xmlDoc;
     21     private string  xmlPath=null;
     22 
     23 
     24     protected void Page_Load(object sender, EventArgs e)
     25     {
     26         xmlPath = MapPath("~/XML/xmlTest.xml");
     27 
     28         xmlDoc = new XmlDocument();
     29         xmlDoc.Load(xmlPath);
     30         XmlDataset();
     31         
     32         //得到第一个节点
     33        // GetFirstChild();
     34 
     35         //得到某一节点的值
     36         //GetContentOfONe();
     37 
     38         //添加一个节点
     39        // AddNode();
     40 
     41         //删除某个节点
     42         //DeleteNode();
     43 
     44         //固定查找
     45         //QueryClearWord();
     46 
     47         //模糊查询
     48         IndistinctQuery();
     49         
     50     }
     51 
     52     //用dom操作xml,并用xml控件显示
     53     protected void XmlDom()
     54     {
     55     
     56         xml.Document = xmlDoc;
     57 
     58     }
     59 
     60     //用dataset操作xml,用数据控件显示
     61     protected void XmlDataset()
     62     {
     63         DataSet ds = new DataSet();
     64         ds.ReadXml(MapPath("~/XML/xmlTest.xml"));
     65         Repeater1.DataSource = ds.Tables[0].DefaultView;
     66         Repeater1.DataBind();
     67     }
     68 
     69     //得到第一个节点的值(注意是innertext)
     70     protected void GetFirstChild()
     71     {
     72         XmlNode xmlNode = xmlDoc.DocumentElement.FirstChild;
     73         if (xmlNode != null)
     74         { 
     75            author.Text = xmlNode["author"].InnerText ;
     76            title.Text = xmlNode["title"].InnerText;
     77            content.Text = xmlNode["content"].InnerText;
     78         }
     79 
     80     }
     81 
     82     //查看某一节点的内容
     83     protected void GetContentOfONe()
     84     {
     85         XmlNodeList node = xmlDoc.DocumentElement.ChildNodes;
     86         StringBuilder sb = new StringBuilder();
     87         sb =sb.Append("<h5>查看某一节点的值</h5>");
     88         for (int i = 0; i < node.Count; i++)
     89         {
     90             sb = sb.Append("<br/>author:" + node[i]["author"].InnerText + "<br/>title:" + node[i]["title"].InnerText + "<br/>content:" + node[i]["content"].InnerText);
     91         }
     92         Response.Write(sb);
     93      
     94        
     95        
     96     }
     97 
     98     //添加一个节点
     99     protected void AddNode()
    100     {
    101         //创建根节点下的新节点newElement
    102         XmlElement newElement = xmlDoc.CreateElement("poems");
    103         //创建newElement下的新节点
    104         XmlElement nlAuthor = xmlDoc.CreateElement("author");
    105         XmlElement nlTitle = xmlDoc.CreateElement("title");
    106         XmlElement nlContent = xmlDoc.CreateElement("content");
    107         //为三个节点赋值
    108         nlAuthor.InnerText = "莫言";
    109         nlTitle.InnerText = "丰乳肥臀";
    110         nlContent.InnerText = "好家伙,获得今年的诺贝尔文学奖";
    111 
    112         //将三个新节点附加到newElement上
    113         newElement.AppendChild(nlAuthor);
    114         newElement.AppendChild(nlTitle);
    115         newElement.AppendChild(nlContent);
    116         //将newElement附加到根节点上
    117         xmlDoc.DocumentElement.AppendChild(newElement);
    118        
    119         //规定插入的位置(第一个节点之后/前)
    120         //xmlDoc.InsertAfter(newElement, xmlDoc.ChildNodes[0]);
    121         //xmlDoc.InsertBefore(newElement,xmlDoc.ChildNodes[0]);
    122 
    123         //默认是放在最后
    124 
    125         //存盘
    126         xmlDoc.Save(xmlPath);
    127 
    128 
    129     }
    130 
    131     //删除特定节点
    132     protected void DeleteNode()
    133     {
    134         int count = xmlDoc.DocumentElement.ChildNodes.Count;
    135         XmlNode node = xmlDoc.DocumentElement.ChildNodes[count - 1];
    136 
    137         //找到要删除节点的父节点
    138         node.ParentNode.RemoveChild(node);
    139         xmlDoc.Save(xmlPath);
    140     }
    141 
    142     protected void QueryClearWord()
    143     {
    144         //注意:xmlDoc.Documnet是得到xmlDoc的根(smallfoolsRoot)
    145 
    146        // XmlNodeList node = xmlDoc.SelectNodes("smallfoolsRoot/poems[author='莫言']");
    147         XmlNodeList node = xmlDoc.DocumentElement.SelectNodes("poems[author='莫言']");
    148         StringBuilder sb = new StringBuilder();
    149         sb = sb.Append("莫言的书有:<br/>");
    150         for (int i = 0; i < node.Count; i++)
    151         {
    152             sb=sb.Append(i+node[i]["content"].InnerText+"<br/>");
    153         }
    154         sb = sb.Append("end");
    155         Response.Write(sb);
    156     }
    157 
    158     
    159     //模糊查询
    160     protected void IndistinctQuery()
    161     {
    162         XmlNodeList nodelist = xmlDoc.DocumentElement.SelectNodes("poems[contains(content,1)]");
    163         StringBuilder sb = new StringBuilder();
    164         sb = sb.Append("模糊查询:<br/>");
    165         for (int i = 0; i < nodelist.Count;i++ )
    166         {
    167             sb = sb.Append(i+nodelist[i]["content"].InnerText+"<br/>");
    168         }
    169         Response.Write(sb);
    170     
    171     
    172     }
    173 
    174 
    175 }

    前台比较简单:

    View Code
     1 <%@ Page Language="C#" AutoEventWireup="true" CodeFile="xmlTest.aspx.cs" Inherits="XML_xmlTest" %>
     2 
     3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     4 
     5 <html xmlns="http://www.w3.org/1999/xhtml">
     6 <head runat="server">
     7     <title>无标题页</title>  
     8 </head>
     9 
    10 <body>
    11     <form id="form1" runat="server">
    12     <div>
    13      <h1> 1:显示xml中的数据 </h1>  
    14     一:直接用xml控件显示xml数据<br />
    15     <asp:Xml DocumentSource="~/XML/xmlTest.xml" runat="server" ></asp:Xml><br />
    16     </div>
    17     <div>
    18     二:用Dom操作,并用xml控件操作数据<br />
    19     <asp:Xml runat="server"  ID="xml"></asp:Xml><br />
    20     </div>
    21     <div>
    22     三:用dataset操作,用数据控件显示数据<br />
    23         <asp:Repeater ID="Repeater1" runat="server">
    24         <ItemTemplate>
    25         <%#Eval("author") %>
    26         <%#Eval("title") %>
    27         <%#Eval("content") %>
    28       <br />
    29         </ItemTemplate>
    30         </asp:Repeater>     
    31     </div>
    32     
    33     <h2>2操作xml中的数据  </h2>
    34     author:<asp:Label ID="author" runat="server" Text=""></asp:Label>title:<asp:Label ID="title" runat="server" Text=""></asp:Label>content:<asp:Label ID="content" runat="server" Text=""></asp:Label>
    35 
    36     </form>
    37 </body>
    38 </html>

     这是xml初始内容:

    View Code
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <smallfoolsRoot>
     3   <poems>
     4     <author>王维</author>
     5     <title>竹里馆</title>
     6     <content>独坐幽篁里,弹琴复长啸。深林人不知,明月来相照。</content>
     7   </poems>
     8   <poems>
     9     <author>孟浩然</author>
    10     <title>宿建德江</title>
    11     <content>移舟泊烟渚,日暮客愁新。野旷天低树,江清月近人1</content>
    12   </poems>
    13   <poems>
    14     <author>李白</author>
    15     <title>杜陵绝句</title>
    16     <content>南登杜陵上,北望五陵间。秋水明落日,流光灭远山</content>
    17   </poems>
    18   <poems>
    19     <author>李白</author>
    20     <title>望庐山瀑布</title>
    21     <content>日照香炉生紫烟,遥看瀑布挂前川。飞流直下三千尺,疑是银河落九天。</content>
    22   </poems>
    23   <poems>
    24     <author>李商隐</author>
    25     <title>锦瑟</title>
    26     <content>锦瑟无端五十弦,一弦一柱思华年。庄生晓梦迷蝴蝶,望帝春心托杜鹃。沧海月明珠有泪,蓝田日暖玉生烟。此情可待成追忆,只是当时已惘然。</content>
    27   </poems>
    28 <smallfoolsRoot>
  • 相关阅读:
    PHP链接xmpp,openfire新增用户,聊天室
    mysql数据库导入导出 授权
    docker容器的跨主机连接
    php编译安装
    WebIM web即时通信 基于openfire+smack的Android、Web、PC开发(一)
    某电商平台开发记要——客服系统
    架构
    kafka-python如何关闭debug日志
    【python编码】 UnicodeDecodeError 分析和解决
    I、Identical Day from 第二届“联想杯”
  • 原文地址:https://www.cnblogs.com/fjsnail/p/2732127.html
Copyright © 2020-2023  润新知