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>
原文地址:https://www.cnblogs.com/fjsnail/p/2732127.html