XML简单操作
关注博客园这么久,这是我写的第一篇博客!希望通过这个方式,将自己的一点一滴记录下来!
这篇博客主要讲讲自学xml的经验,主要是在asp.net中操作xml.涉及添加节点,删除节点,模糊查询,修改等;
后台代码:

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 }
前台比较简单:

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初始内容:

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>