XML基本概念及增刪改查操作

一、概念及特征:

1. XML 指可擴展標記語言(Extensible Markup Language),用戶可以自己定義標簽。XML 被設計用來傳輸和存儲數據,而 HTML 用于格式化并顯示數據,并且HTML不能自定義標簽。

2. XML 文檔形成一種樹結構, XML 文檔必須包含根元素。該元素是所有其他元素的父元素。XML 文檔中的元素形成了一棵文檔樹。這棵樹從根部開始,并擴展到樹的最底端。

3. XML中所有元素都必須有關閉標簽, XML 必須正確地嵌套, XML 的屬性值須加引號, XML 標簽對大小寫敏感。

二、基本格式示例:

<bookstore><book category="CHILDREN"><title>Harry Potter</title><author>J K. Rowling</author><year>2005</year><price>29.99</price></book></bookstore>

三、使用XMLDocument讀寫XML

protected void btnCreate_Click(object sender, EventArgs e){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(Server.MapPath("bookstore.xml"));XmlNode root = xmlDoc.SelectSingleNode("bookstore");XmlElement xe1 = xmlDoc.CreateElement("book");xe1.SetAttribute("genre", "李贊紅");xe1.SetAttribute("ISBN", "2-3631-4");XmlElement xesub1 = xmlDoc.CreateElement("title");xesub1.InnerText = "CS從入門到精通";xe1.AppendChild(xesub1);XmlElement xesub2 = xmlDoc.CreateElement("author");xesub2.InnerText = "候捷";xe1.AppendChild(xesub2);XmlElement xesub3 = xmlDoc.CreateElement("price");xesub3.InnerText = "58.3";xe1.AppendChild(xesub3);root.AppendChild(xe1);xmlDoc.Save(Server.MapPath("bookstore.xml"));} protected void EditNodes_Click(object sender, EventArgs e){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(Server.MapPath("bookstore.xml"));XmlNodeList nodeList = xmlDoc.SelectSingleNode("bookstore").ChildNodes;foreach (XmlNode xn in nodeList){XmlElement xe = (XmlElement)xn;if (xe.GetAttribute("genre") == "李贊紅"){xe.SetAttribute("genre", "update李贊紅");XmlNodeList nls = xe.ChildNodes;foreach (XmlNode xn1 in nls){XmlElement xe2 = (XmlElement)xn1;if (xe2.Name == "author"){xe2.InnerText = "亞勝";break;}}break;}}xmlDoc.Save(Server.MapPath("bookstore.xml"));}protected void btnDelete_Click(object sender, EventArgs e){XmlDocument xmlDoc = new XmlDocument();xmlDoc.Load(Server.MapPath("bookstore.xml"));XmlNodeList xnl = xmlDoc.SelectSingleNode("bookstore").ChildNodes;foreach (XmlNode xn in xnl){XmlElement xe = (XmlElement)xn;if (xe.GetAttribute("genre") == "fantasy"){xe.RemoveAttribute("genre");}else if (xe.GetAttribute("genre") == "update李贊紅"){xe.RemoveAll();}}xmlDoc.Save(Server.MapPath("bookstore.xml"));}

四、使用LINQ to XML讀寫XML,LINQ to XML 最重要的優勢是它與 Language-Integrated Query (LINQ) 的集成。

private void CreateXmlFile(){   ///設置新的XML文件保存的地址string xmlFilePath = Server.MapPath("Books.xml");XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "no"),new XElement("Books",new XElement("Book",new XAttribute("ID", "104"),                       ///添加屬性IDnew XElement("No", "0004"),                     ///添加元素Nonew XElement("Name", "Book 0004"),             ///添加元素Namenew XElement("Price", "300"),                    ///添加元素Pricenew XElement("Remark", "This is a book 0004.")    ///添加元素Remark
                                        )));///保存為XML文件
            doc.Save(xmlFilePath);///顯示XML文件的內容
            Response.Write(doc);///設置網頁顯示的形式為XML文件Response.ContentType = "text/xml";Response.End();}private void AddXmlElement(){        ///導入XML文件string xmlFilePath = Server.MapPath("Books.xml");XElement xe = XElement.Load(xmlFilePath);///創建一個新的節點XElement book = new XElement("Book",new XAttribute("ID", "105"),                       ///添加屬性IDnew XElement("No", "0005"),                     ///添加元素Nonew XElement("Name", "Book 0005"),             ///添加元素Namenew XElement("Price", "500"),                    ///添加元素Pricenew XElement("Remark", "This is a book 0005.")   ///添加元素Remark
                     );///添加節點到文件中,并保存
            xe.Add(book);xe.Save(xmlFilePath);///顯示XML文件的內容
            Response.Write(xe);///設置網頁顯示的形式為XML文件Response.ContentType = "text/xml";Response.End();}private void UpdateXmlElement(){///導入XML文件string xmlFilePath = Server.MapPath("Books.xml");XElement xe = XElement.Load(xmlFilePath);///查找被替換的元素IEnumerable<XElement> element = from e in xe.Elements("Book")where e.Attribute("ID").Value == "104"select e;///替換為新元素,并保存if (element.Count() > 0){XElement first = element.First();///設置新的屬性first.SetAttributeValue("ID", "106");///替換新的節點
                first.ReplaceNodes(new XElement("No", "0006"),                      ///添加元素Nonew XElement("Name", "Book 0006"),              ///添加元素Namenew XElement("Price", "600"),                     ///添加元素Pricenew XElement("Remark", "This is a book 0006.")     ///添加元素Remark
                         );}xe.Save(xmlFilePath);///顯示XML文件的內容
            Response.Write(xe);///設置網頁顯示的形式為XML文件Response.ContentType = "text/xml";Response.End();}private void RemoveXmlElement(){///導入XML文件string xmlFilePath = Server.MapPath("Books.xml");XElement xe = XElement.Load(xmlFilePath);///查找被刪除的元素IEnumerable<XElement> element = from e in xe.Elements()where (string)e.Element("Name") == "Book 0006"select e;///刪除指定的元素,并保存if (element.Count() > 0) { element.First().Remove(); }xe.Save(xmlFilePath);///顯示XML文件的內容
            Response.Write(xe);///設置網頁顯示的形式為XML文件Response.ContentType = "text/xml";Response.End();}

轉載于:https://www.cnblogs.com/xiaxianfei/p/5265242.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458213.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458213.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458213.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 時間類型 datetime,timestamp

2019獨角獸企業重金招聘Python工程師標準>>> CURRENT_TIMESTAMP 的 timestamp 意思是 根據 mysql 的當前時間&#xff0c;使用mysql 的當前時間。 參考地址&#xff1a;http://blog.sina.com.cn/s/blog_67cc6e7d0100nrwk.html datetime 和 timestamp 都是保存時間格…

生成jsp驗證碼的代碼詳解(servlet版)

package util; import java.util.*; import java.io.*; import java.awt.*; import java.awt.image.*; import javax.servlet.*; import javax.servlet.http.*; import com.sun.image.codec.jpeg.*; /** 生成驗證碼圖片*/ public class ValidateCode exten…

機器學習中的交叉驗證(cross-validation)

from:https://blog.csdn.net/lhx878619717/article/details/49079785 交叉驗證&#xff08;Cross validation)&#xff0c;交叉驗證用于防止模型過于復雜而引起的過擬合. 有時亦稱循環估計&#xff0c; 是一種統計學上將數據樣本切割成較小子集的實用方法。于是可以先在一個子…

linux禁止ping

執行此命令 &#xff1a;echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all 可以禁止ping一、如果沒有iptables禁止pingecho 1 > /proc/sys/net/ipv4/icmp_echo_igore_all #開啟echo 0 > /proc/sys/net/ipv4/icmp_echo_igore_all #關閉二、利用iptables規則禁pingi…

python3字符串屬性(二)

1、S.isdecimal() -> bool Return True if there are only decimal characters in S, False otherwise. 字符串如果是十進制&#xff0c;返回True。 2、S.isdigit() -> bool Return True if all characters in S are digits and there is at least one character …

使用libsvm中的svm_cross_validation函數進行交叉驗證

from:https://blog.csdn.net/tao1107291820/article/details/51581322 在libsvm的使用中&#xff0c;為了得到更好的c、gama參數&#xff0c;可以通過多次使用libsvm中的svm_cross_validation函數進行參數尋優&#xff0c;下面是svm_cross_validation的一種使用方法&#xff1…

JavaScript中eval()函數

eval調用時&#xff0c;實例為eval( "( javascript代碼 )" )&#xff0c; eval() 函數可將字符串轉換為代碼執行&#xff0c;并返回一個或多個值。轉載于:https://www.cnblogs.com/lxcmyf/p/5703640.html

輕松談話:談話的力量

如何與她人搭話&#xff1f;&#xff1f; 第一&#xff1a;給別人一個好印象 1、環境&#xff1a;通過共同環境來激發興趣&#xff0c;比如&#xff1a;在球場&#xff0c;你覺得誰會贏。 2、對方:多數人喜歡談論自己。 3、自己&#xff1a;主動表明意圖&#xff0c;要真誠。 第…

函數的二義性與函數對象的傳遞問題(通過實現vector的to_string示例)

許多時候&#xff0c;我們想要直接打印容器的內容&#xff0c;比如 std::vector<int> a { 1, 2, 3 }; 可以打印出[1, 2, 3]。 參考標準庫&#xff0c;可以寫出一個帶有迭代器的to_string函數&#xff1a; template <typename Iter, typename Func> std::string to…

libSVM介紹(二)

from&#xff1a;https://blog.csdn.net/carson2005/article/details/6539192 鑒于libSVM中的readme文件有點長&#xff0c;而且&#xff0c;都是采用英文書寫&#xff0c;這里&#xff0c;我把其中重要的內容提煉出來&#xff0c;并給出相應的例子來說明其用法&#xff0c;大家…

四則運算題2

本題新學知識點&#xff1a; itoa函數 char *itoa( int value, char *string,int radix);[1]原型說明&#xff1a;value&#xff1a;欲轉換的數據。string&#xff1a;目標字符串的地址。radix&#xff1a;轉換后的進制數&#xff0c;可以是10進制、16進制等。程序實例:#includ…

c++調用Libsvm

libSVM中的readme中文版&#xff1a;http://blog.csdn.net/carson2005/article/details/6539192 LibSVM的package中的Readme文件中介紹了怎樣具體的使用LibSvm&#xff0c;可以在Dos下以命令形式進行調用&#xff0c;也可以用程序包中提供的GUI程序Svm-toy進行圖形化的操作。sv…

STL -set

轉載自&#xff1a;http://blog.csdn.net/LYHVOYAGE/article/details/22989659 set集合容器實現了紅黑樹&#xff08;Red-Black Tree&#xff09;的平衡二叉檢索樹的的數據結構&#xff0c; 在插入元素時&#xff0c;它會自動調整二叉樹的排列&#xff0c;把該元素放到適當的位…

【機器學習實戰之一】:C++實現K-近鄰算法KNN

本文不對KNN算法做過多的理論上的解釋&#xff0c;主要是針對問題&#xff0c;進行算法的設計和代碼的注解。 KNN算法&#xff1a; 優點&#xff1a;精度高、對異常值不敏感、無數據輸入假定。 缺點&#xff1a;計算復雜度高、空間復雜度高。 適用數據范圍&#xff1a;數值…

libsvm C++ 代碼參數說明匯總

幾個重要的數據結構 2.1 struct svm_problem {int l; // 記錄樣本的總數double *y; // 樣本所屬的標簽(1, -1)struct svm_node **x; // 指向樣本數據的二維數組(即一個矩陣&#xff0c;行數是樣本數&#xff0c;列數是特征向量維度) }; 2.2 struct svm_node {int …

javascript設計模式-繼承

javascript繼承分為兩種&#xff1a;類式繼承&#xff08;原型鏈、extend函數&#xff09;、原型式繼承&#xff08;對繼承而來的成員的讀和寫的不對等性、clone函數&#xff09;。 類式繼承-->prototype繼承&#xff1a; 1 function Person(name){2 this.name …

GIS基礎軟件及操作(二)

原文 GIS基礎軟件及操作(二) 練習二、管理地理空間數據庫 1.利用ArcCatalog 管理地理空間數據庫 2.在ArcMap中編輯屬性數據 第1步 啟動 ArcCatalog 打開一個地理數據庫 當 ArcCatalog打開后&#xff0c;點擊, 按鈕&#xff08;連接到文件夾&#xff09;. 建立到包含練習數據的…

libSVM分類小例C++

from&#xff1a;http://www.doczj.com/list_31/ 使用libSVM求解分類問題的C小例 1.libSVM簡介 訓練模型的結構體 struct svm_problem//儲存參加計算的所有樣本 { int l; //記錄樣本總數 double *y; //指向樣本類別的組數 //prob.y new double[prob.l]; struct svm_node …

qunit 前端腳本測試用例

首先引用qunit 測試框架文件 <link rel"stylesheet" href"qunit-1.22.0.css"> <script src"qunit-1.22.0.js"></script> <div id"qunit"></div> <div id"qunit-fixture"></div>…

非常規文件名刪除

生活中我們偶爾會遇到這樣一件事&#xff1a;走在路上&#xff0c;突然感覺鞋底有東西&#xff0c;抬腳一看&#xff0c;是個泡泡糖。拿不掉&#xff0c;走路還一粘一粘的。要多難受有多難受&#xff01;同樣在linux中也有這么一種文件名。看著不舒服&#xff0c;卻刪不掉。今天…