日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

大数据WEB阶段(一)XML文件的操作

發布時間:2024/4/30 asp.net 64 豆豆
生活随笔 收集整理的這篇文章主要介紹了 大数据WEB阶段(一)XML文件的操作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

XML

一、XML概述

  • XML是什么?
    • XML : Extensible Markup Language 可擴展標記語言 。 由w3c組織提供 , 2000年開發出1.0版本 , 現在用1.0版本居多 。
    • XML是一種數據存儲或傳輸的格式 , 本質上就是一串字符串 。
  • XML是怎么保存數據的?
    • 在XML中 , 利用標簽來保存數據 , 利用標簽之間的層級關系表示數據之間的層級關系 。
    • 用戶可以自定義標簽 , 標簽分為開始標簽和結束標簽 , 在開始標簽和結束標簽之間可以嵌套其它標簽 。
  • XML應用場景
    • 傳輸數據
      • 由于XML本質上是一段字符串 , 具有跨平臺性 , 所以可以在不同的系統之間進行數據交換 。
      • 如:天氣數據XML接口 :http://flash.weather.com.cn/wmaps/xml/china.xml
    • 用作配置文件
      • XML可以有結構的保存數據 , 因此XML常常用作應用程序的配置文件

二、XML語法

  • 文檔聲明

    • 可以用來聲明XML文檔的基本屬性信息 , 解析器會根據文檔 聲明類決定如何解析這個文檔 。

      <?xml version="1.0" ebcoding="utf-8" ?>
    • version 用于指定XML文檔所遵循的XML版本
    • encoding 用于通知XML解析器使用什么編碼來解析該文檔 encoding指定的編碼必須和xml保存時指定的編碼一致, 否則會出現亂碼 。
    • 注意:
      • 一個XML文檔有且僅有一個文檔聲明(規范要求)
      • 文檔聲明只能放在文檔的首行 , 并且前面不能有任何內容 。
      • 如果一個XML文檔沒有文檔聲明 , 該文檔是一個格式不良好的XML文檔 。
  • 元素

    • 一個標簽就是一個元素

      如:<book></book>其中 <book> 為開始標簽 </book>為結束標簽
    • 如果一個標簽體內沒有任何內容 , 那么可以將開始標簽和結束標簽合并

      如: <book/>
    • 一個xml文檔中只能有一個根標簽
    • 標簽之間可以嵌套 , 來表示數據之間的層級關系 , 但不能出現交叉嵌套

      比如: <a>welcome to <b>www.tarena.com.cn</a></b> 錯誤 <a>welcome to www.tarena.com.cn</b></a> 錯誤 <a>welcome to www.tarena.com.cn<b/></a> 正確 <a>welcome to www.tarena<b/>.com.cn</a> 正確
    • XML元素的命名規范:

      • 區分大小寫

        如: <a/> 與 <A/> 是兩個不同標簽
      • 不能以數字或標點符號開頭

        如: <123a/> 錯誤
      • 不能以任意形式的xml開頭
      • 不能包含空格
      • 不能包含冒號
  • 屬性
    • 一個標簽可以有多個屬性 , 多個屬性之間可以用空格分開 , 屬性值一定要用單引號, 或雙引號引起來 。
    • 屬性具有與 元素相同的命名規范 。
  • 注釋

    • 格式

      <!-- 內容-->
    • 注意:
      • 注釋不能放在文檔聲明前
      • 注釋不能嵌套
  • 轉義字符

    • 用其他符號代替特殊符號

      幾個常用的轉義字符 < &lt; > &gt; " &quot; ' &apos; & &amp;
  • XML解析
    • DOM解析
    • SAX解析
    • 解析開發包
      • Jaxp 、 Jdom 、 dom4j

三、實例

  • 編寫程序之前 ,需要些導入相應的解析XML的包dom4j.jar , 并build path
  • 被操作的XML文檔

    <?xml version="1.0" encoding="utf-8" ?> <書架> <書> <書名>數據結構</書名> <作者>嚴蔚敏</作者> <售價>29.00元</售價> </書> <書> <書名>高等數學</書名> <作者>同濟大學數學系</作者> <售價>55.00元</售價></書> </書架>
  • 入門程序

    import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader;/*** dom4j快速入門程序*/ public class Demo1 {public static void main(String[] args) throws DocumentException {//1.創建解析器SAXReader reader = new SAXReader();//2.利用解析器讀取xml文件Document doc = reader.read("book.xml");//3.獲取根節點Element root = doc.getRootElement();//4.獲取第一本書節點Element bookEle = root.element("書");//5.獲取第一個書名節點Element bookNameEle = bookEle.element("書名");//6.獲取書名中的內容String text = bookNameEle.getText();System.out.println("第一本書的書名為:"+text);} }
  • 操作元素

    • 在案例中先將創建解析器 , 讀取文檔這兩部每次都需要寫的操作抽取了出來作為工具方法
    • 對文檔進行增、刪、改后 , 需要將修改后的文檔重新寫入到xml中 , 所以也把重新寫回xml的步驟也抽取出來 形成一個XMLUtils工具類 。
    • XMLUtils工具類

      import java.io.File; import java.io.FileOutputStream;import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter;public class XMLUtils {/*** 將更新的document寫入到xml中* @param doc* @param xmlPath*/public static void write2Xml(Document doc, String xmlPath){try {//將更新的document寫入到xml中,并加入格式輸出器XMLWriter writer = new XMLWriter(new FileOutputStream(new File("book.xml")),OutputFormat.createPrettyPrint());writer.write(doc);writer.close();} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}/*** 解析xml文件,獲取document對象* @param xmlPath* @return*/public static Document getDoc(String xmlPath){try {//1.創建解析器SAXReader reader = new SAXReader();//2.利用解析器讀取xml文件Document doc = reader.read(xmlPath);return doc;} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e); }} }

    *對XML文檔中的元素進行增、刪、改、查

    import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.FileWriter;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;/*** dom4j操作元素節點**/public class Demo2 {public static void main(String[] args) throws DocumentException, IOException {//2.查詢第二本書的售價,并輸出到控制臺//findPrice();//3.給第一本書添加一個特價節點(2種方式)//addPrice();//4.給第二本書在作者節點前插入一個特價節點//addPrice2();//5.刪除第二本書的特價節點(2種方式)//deletePriceEle();//6.更新第一本書的特價節點的內容為19.8元//創建解析器并獲取根節點Document doc = XMLUtils.getDoc("book.xml");doc.getRootElement().element("書").element("特價").setText("19.8元");//將更新的document寫入到xml中XMLUtils.write2Xml(doc, "book.xml");System.out.println("執行完畢");}private static void deletePriceEle() {//創建解析器并獲取根節點Document doc = XMLUtils.getDoc("book.xml");Element root = doc.getRootElement();//獲取root下所有節點集合List<Element> list = root.elements();//獲取第二個本書Element bookEle2 = list.get(1);/*//方法一//獲取特價節點Element priceEle2 = bookEle2.element("特價");//將特價節點從第二本書中刪除bookEle2.remove(priceEle2);*///方法二//獲取第二本書所有元素List list2 = bookEle2.elements();//刪除第二個元素list2.remove(1);//將更新的document寫入到xml中XMLUtils.write2Xml(doc, "book.xml");}private static void addPrice2() {//創建解析器并獲取根節點Document doc = XMLUtils.getDoc("book.xml");Element root = doc.getRootElement();//獲取root下所有節點集合List<Element> list = root.elements();//獲取第二個元素Element bookEle2 = list.get(1);//創建一個游離節點Element priceEle2 = DocumentHelper.createElement("特價");priceEle2.setText("6.6元");//將游離節點插入到指定位置List list2 = bookEle2.elements();list2.add(1, priceEle2);//將更新的document寫入到xml中XMLUtils.write2Xml(doc, "book.xml");}private static void addPrice() throws UnsupportedEncodingException,FileNotFoundException, IOException {//創建解析器并獲取根節點Document doc = XMLUtils.getDoc("book.xml");Element root = doc.getRootElement();//獲取第一本書Element bookEle = root.element("書");/*//方式一//創建一個游離的節點Element priceEle2 = DocumentHelper.createElement("特價");priceEle2.setText("9.9元");//將游離節點掛載到第一本書上bookEle.add(priceEle2);*///方式二//在第一本書上添加特價子節點Element priceEle2 = bookEle.addElement("特價");priceEle2.setText("8.8元");//將更新的document寫入到xml中,并加入格式輸出器XMLWriter writer = new XMLWriter(new FileOutputStream(new File("book.xml")),OutputFormat.createPrettyPrint());writer.write(doc);writer.close();}private static void findPrice() throws DocumentException {//1.創建解析器SAXReader reader = new SAXReader();//2.利用解析器讀取xml文件Document doc = reader.read("book.xml");//3.獲取根節點Element root = doc.getRootElement();//4.獲取root下所有節點集合List<Element> list = root.elements();//5.獲取第二本書節點Element bookEle2 = list.get(1);//6.獲取第二本書的售價節點Element price = bookEle2.element("售價");//7.獲取售價String text = price.getText();System.out.println("第二本書的售價為:"+text);}}
  • 操作元素的屬性

    import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;/*** dom4j操作屬性節點*/public class Demo3 {public static void main(String[] args) {//1.給第一本書添加一個屬性,如:出版社="清華大學出版社"(2種方式)//addAttr();//2.在控制臺上打印輸出第一本書的出版社屬性的值,并更新屬性的值為“人民出版社”(3種方式)//findAndUpdateAttr();//3.刪除第一本書的出版社屬性(2種方式)//創建解析器,讀取xml,獲取根目錄Document doc = XMLUtils.getDoc("book.xml");Element root = doc.getRootElement();//獲取第一本書Element bookEle = root.element("書");/*//方式一//獲取第一本書的屬性Attribute attr = bookEle.attribute("出版社");//將屬性從第一本書中刪除bookEle.remove(attr);*///方式二//如果給一個正常值,為添加,如果給一個null,則為刪除bookEle.addAttribute("出版社",null);//將更新的document寫入到xml文檔中XMLUtils.write2Xml(doc, "book.xml");System.out.println("執行完成");}private static void findAndUpdateAttr() {//創建解析器,讀取xml,獲取根目錄Document doc = XMLUtils.getDoc("book.xml");Element root = doc.getRootElement();//獲取第一本書Element bookEle = root.element("書");//方式一//Attribute attr = bookEle.attribute(0);//方式二Attribute attr = bookEle.attribute("出版社");attr.setValue("人民出版社");System.out.println(attr.getName()+":"+attr.getValue());//方式三//String value = bookEle.attributeValue("出版社");//System.out.println(value);//將更新的document寫入到xml文檔中XMLUtils.write2Xml(doc, "book.xml");}private static void addAttr() {//創建解析器,讀取xml,獲取根目錄Document doc = XMLUtils.getDoc("book.xml");Element root = doc.getRootElement();//獲取第一本書Element bookEle = root.element("書");/*//方法一//創建一個游離的屬性Attribute attr = DocumentHelper.createAttribute(bookEle, "出版社", "清華大學出版社");//將游離的屬性掛載到第一本書上bookEle.add(attr);*///方法二//在第一本書上直接添加屬性bookEle.addAttribute("版次","1.0");//將更新的document寫入到xml文檔中XMLUtils.write2Xml(doc, "book.xml");}}

總結

以上是生活随笔為你收集整理的大数据WEB阶段(一)XML文件的操作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一性一乱一交一视频 | 看欧美一级片 | 女攻总攻大胸奶汁(高h) | 天堂中文在线网 | 日本孕妇孕交 | 日本a级网站 | 欧美一级无毛 | 午夜婷婷 | 色屁屁影院www国产高清麻豆 | 国产又粗又大又硬 | 丰满少妇一区二区三区视频 | 亚洲夜色 | 一本一道久久 | 污视频网站免费观看 | 日韩a在线 | 精品无码国产一区二区三区av | 黄色国产毛片 | 亚洲精品成人区在线观看 | 一二三区中文字幕 | 欧美极度另类 | 久久黄色片 | 精品久久久久久久久中文字幕 | 久久精品国产亚洲av久 | 办公室摸腿吻胸激情视频 | 国产富婆一级全黄大片 | av在线资源网 | 中文国产字幕 | av黄色天堂 | 黄色长视频 | 国久久久 | wwwxxx日本人| 五月婷婷中文 | 亚洲国产精品成人久久蜜臀 | 中文字幕在线视频播放 | 欧美狠狠爱 | 蜜桃av一区 | 亚洲伊人精品 | 小说肉肉视频 | 国产区高清| 冲田杏梨一区二区三区 | 国产成人精品123区免费视频 | 国产精品亚洲视频 | 日韩欧美一区二区在线观看 | 91国内精品 | 香港三级日本三级三69 | 成人视屏在线观看 | 狠狠丁香| 处破痛哭a√18成年片免费 | 成人免费视频久久 | 久精品视频 | 天堂资源在线播放 | 国产婷婷一区二区 | 自拍视频国产 | 国产在线视频自拍 | 黄色av网站在线观看 | 成人里番精品一区二区 | 丰满大乳国产精品 | 在线观看第一页 | 日韩精品久久久久 | 蜜桃香蕉视频 | 亚洲av无一区二区三区久久 | 精品视频免费观看 | 伊人激情在线 | 国产91免费看| 欧美日韩少妇 | 免费操人视频 | 丰满人妻一区二区三区46 | 91大神精品 | 麻豆精品免费 | 在线免费观看日本 | 国产午夜精品一区二区理论影院 | 欧美群交射精内射颜射潮喷 | 亚洲欧美韩日 | www日本视频 | 中文字幕一区二区三区5566 | 久久午夜片 | 色婷婷av一区二区三区之红樱桃 | 日韩不卡毛片 | 91免费视频网站 | 亚洲一区二区久久 | 青草草在线观看 | 欧美日韩1| 精产国产伦理一二三区 | 青青青草视频在线 | 久久国产精品影视 | 无码人妻一区二区三区线 | 亚洲视频一二三 | 成人玩具h视频 | 黄色大片aa | 亚洲最大色网站 | 91嫩草视频在线观看 | 欧美亚洲在线播放 | 婷婷成人av | 爱爱福利社 | 欧美日韩一级黄色片 | 性感少妇av | 欧美精品免费在线观看 | 好姑娘在线观看高清完整版电影 | 97视频久久|