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

歡迎訪問 生活随笔!

生活随笔

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

asp.net

XML学习笔记02【xml_解析】

發布時間:2024/9/30 asp.net 101 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XML学习笔记02【xml_解析】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • Java后端 學習路線 筆記匯總表【黑馬程序員】
  • XML學習筆記01【xml_基礎、xml_約束】【day01】
  • XML學習筆記02【xml_解析】【day01】
  • 目錄

    03 xml_解析

    xml_解析_解析方式

    xml_解析_常見的解析器

    xml_解析_Jsoup_快速入門

    xml_解析_Jsoup_Jsoup對象

    xml_解析_Jsoup_Document對象

    xml_解析_Jsoup_Element對象

    xml_解析_Jsoup_根據選擇器查詢

    xml_解析_Jsoup_根據Xpath查詢


    03 xml_解析

    xml_解析_解析方式

    解析:操作xml文檔,將文檔中的數據讀取到內存中
    ?? ?* 操作xml文檔
    ?? ??? ?1. 解析(讀取):將文檔中的數據讀取到內存中
    ?? ??? ?2. 寫入:將內存中的數據保存到xml文檔中。持久化的存儲

    ?? ?* 解析xml的方式:
    ?? ??? ?1. DOM:將標記語言文檔一次性加載進內存,在內存中形成一顆dom樹
    ?? ??? ??? ?* 優點:操作方便,可以對文檔進行CRUD的所有操作
    ?? ??? ??? ?* 缺點:占內存
    ?? ??? ?2. SAX:逐行讀取,基于事件驅動的。
    ?? ??? ??? ?* 優點:不占內存。
    ?? ??? ??? ?* 缺點:只能讀取,不能增刪改

    xml_解析_常見的解析器

    * xml常見的解析器:

  • JAXP:sun公司提供的解析器,支持dom和sax兩種思想。
  • DOM4J:一款非常優秀的解析器。
  • Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。
  • PULL:Android操作系統內置的解析器,sax方式的。
  • * Jsoup:jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套非常省力的API,可通過DOM,CSS以及類似于jQuery的操作方法來取出和操作數據。

    xml_解析_Jsoup_快速入門

    * 快速入門:
    ? ? * 步驟:

  • 導入jar包
  • 獲取Document對象
  • 獲取對應的標簽Element對象
  • 獲取數據
  • * 代碼:...

    ??

    ??

    package cn.itcast.xml.jsoup;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;import java.io.File; import java.io.IOException;/*** Jsoup快速入門*/ public class JsoupDemo1 {public static void main(String[] args) throws IOException {//2.獲取Document對象,根據xml文檔獲取//2.1獲取student.xml的pathString path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();//2.2解析xml文檔,加載文檔進內存,獲取dom樹--->DocumentDocument document = Jsoup.parse(new File(path), "utf-8");//3.獲取元素對象 ElementElements elements = document.getElementsByTag("name");System.out.println(elements.size());//3.1獲取第一個name的Element對象Element element = elements.get(0);//3.2獲取數據String name = element.text();System.out.println(name);} }

    xml_解析_Jsoup_Jsoup對象

    * 對象的使用:
    ? ? 1. Jsoup:工具類,可以解析html或xml文檔,返回Document。
    ? ? ? ? ? ? * parse:解析html或xml文檔,返回Document
    ? ? ? ? ? ? ? ? * parse?(File in, String charsetName):解析xml或html文件的。
    ?? ??? ??? ??? ?* parse?(String html):解析xml或html字符串
    ?? ??? ??? ??? ?* parse?(URL url, int timeoutMillis):通過網絡路徑獲取指定的html或xml的文檔對象
    ? ? 2. Document:文檔對象,代表內存中的dom樹。
    ? ? 3. Elements:元素Element對象的集合,可以當做 ArrayList<Element>來使用。
    ? ? 4. Element:元素對象
    ? ? 5. Node:節點對象

    ??

    ??

    package cn.itcast.xml.jsoup;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;import java.io.File; import java.io.IOException; import java.net.URL;/*** Jsoup對象功能*/ public class JsoupDemo2 {public static void main(String[] args) throws IOException {//2.1獲取student.xml的pathString path = JsoupDemo2.class.getClassLoader().getResource("student.xml").getPath();//2.2解析xml文檔,加載文檔進內存,獲取dom樹--->Document/* Document document = Jsoup.parse(new File(path), "utf-8");System.out.println(document);*///2.parse?(String html):解析xml或html字符串/* String str = "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n" +"\n" +"<students>\n" +"\t<student number=\"heima_0001\">\n" +"\t\t<name>tom</name>\n" +"\t\t<age>18</age>\n" +"\t\t<sex>male</sex>\n" +"\t</student>\n" +"\t<student number=\"heima_0002\">\n" +"\t\t<name>jack</name>\n" +"\t\t<age>18</age>\n" +"\t\t<sex>female</sex>\n" +"\t</student>\n" +"\n" +"</students>";Document document = Jsoup.parse(str);System.out.println(document);*///3.parse?(URL url, int timeoutMillis):通過網絡路徑獲取指定的html或xml的文檔對象URL url = new URL("https://baike.baidu.com/item/jsoup/9012509?fr=aladdin");//代表網絡中的一個資源路徑Document document = Jsoup.parse(url, 10000);System.out.println(document);} }

    xml_解析_Jsoup_Document對象

    * 對象的使用:
    ? ? 1. Jsoup:工具類,可以解析html或xml文檔,返回Document。
    ? ? 2. Document:文檔對象。代表內存中的dom樹
    ?? ??? ??? ?* 獲取Element對象
    ?? ??? ??? ??? ?* getElementById (String id):根據id屬性值獲取唯一的element對象
    ?? ??? ??? ??? ?* getElementsByTag (String tagName):根據標簽名稱獲取元素對象集合
    ?? ??? ??? ??? ?* getElementsByAttribute (String key):根據屬性名稱獲取元素對象集合
    ?? ??? ??? ??? ?* getElementsByAttributeValue (String key, String value):根據對應的屬性名和屬性值獲取元素對象集合
    ? ? 3. Elements:元素Element對象的集合,可以當做 ArrayList<Element>來使用。
    ? ? 4. Element:元素對象
    ? ? 5. Node:節點對象

    ??

    package cn.itcast.xml.jsoup;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;import java.io.File; import java.io.IOException; import java.net.URL;/*** Document/Element對象功能*/ public class JsoupDemo3 {public static void main(String[] args) throws IOException {//1.獲取student.xml的pathString path = JsoupDemo3.class.getClassLoader().getResource("student.xml").getPath();//2.獲取Document對象Document document = Jsoup.parse(new File(path), "utf-8");//3.獲取元素對象了。//3.1獲取所有student對象Elements elements = document.getElementsByTag("student");System.out.println(elements);System.out.println("-----------");//3.2 獲取屬性名為id的元素對象們Elements elements1 = document.getElementsByAttribute("id");System.out.println(elements1);System.out.println("-----------");//3.2獲取 number屬性值為heima_0001的元素對象Elements elements2 = document.getElementsByAttributeValue("number", "heima_0001");System.out.println(elements2);System.out.println("-----------");//3.3獲取id屬性值的元素對象Element itcast = document.getElementById("itcast");System.out.println(itcast);} }

    xml_解析_Jsoup_Element對象

    * 對象的使用:
    ? ? 1. Jsoup:工具類,可以解析html或xml文檔,返回Document。
    ? ? 2. Document:文檔對象。代表內存中的dom樹
    ? ? 3. Elements:元素Element對象的集合,可以當做 ArrayList<Element>來使用。? ??

    ? ? 4. Element:元素對象
    ?? ??? ??? ?1. 獲取子元素對象
    ?? ??? ??? ??? ?* getElementById (String id):根據id屬性值獲取唯一的element對象
    ?? ??? ??? ??? ?* getElementsByTag (String tagName):根據標簽名稱獲取元素對象集合
    ?? ??? ??? ??? ?* getElementsByAttribute (String key):根據屬性名稱獲取元素對象集合
    ?? ??? ??? ??? ?* getElementsByAttributeValue (String key, String value):根據對應的屬性名和屬性值獲取元素對象集合
    ?? ??? ??? ?2. 獲取屬性值
    ?? ??? ??? ??? ?* String attr(String key):根據屬性名稱獲取屬性值
    ?? ??? ??? ?3. 獲取文本內容
    ?? ??? ??? ??? ?* String text():獲取文本內容
    ?? ??? ??? ??? ?* String html():獲取標簽體的所有內容(包括子標簽的字符串內容)

    ? ? 5. Node:節點對象
    ?? ??? ??? ?* 是Document和Element的父類

    ??

    package cn.itcast.xml.jsoup;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;import java.io.File; import java.io.IOException;/*** Element對象功能*/ public class JsoupDemo4 {public static void main(String[] args) throws IOException {//1.獲取student.xml的pathString path = JsoupDemo4.class.getClassLoader().getResource("student.xml").getPath();//2.獲取Document對象Document document = Jsoup.parse(new File(path), "utf-8");/*Element:元素對象1. 獲取子元素對象* getElementById?(String id):根據id屬性值獲取唯一的element對象* getElementsByTag?(String tagName):根據標簽名稱獲取元素對象集合* getElementsByAttribute?(String key):根據屬性名稱獲取元素對象集合* getElementsByAttributeValue?(String key, String value):根據對應的屬性名和屬性值獲取元素對象集合2. 獲取屬性值* String attr(String key):根據屬性名稱獲取屬性值3. 獲取文本內容* String text():獲取所有字標簽的純文本內容* String html():獲取標簽體的所有內容(包括子標簽的標簽和文本內容)*///通過Document對象獲取name標簽,獲取所有的name標簽,可以獲取到兩個Elements elements = document.getElementsByTag("name");System.out.println(elements.size());System.out.println("----------------");//通過Element對象獲取子標簽對象Element element_student = document.getElementsByTag("student").get(0);Elements ele_name = element_student.getElementsByTag("name");System.out.println(ele_name.size());//獲取student對象的屬性值String number = element_student.attr("NUMBER");System.out.println(number);System.out.println("------------");//獲取文本內容String text = ele_name.text();String html = ele_name.html();System.out.println(text);System.out.println(html);} }

    xml_解析_Jsoup_根據選擇器查詢

    * 快捷查詢方式:
    ? ? 1. selector:選擇器
    ? ? ? ? ? ? * 使用的方法:Elements?? ?select?(String cssQuery)
    ? ? ? ? ? ? ? ? * 語法:參考Selector類中定義的語法
    ? ? 2. XPath

    package cn.itcast.xml.jsoup;import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements;import java.io.File; import java.io.IOException;/*** 選擇器查詢*/ public class JsoupDemo5 {public static void main(String[] args) throws IOException {//1.獲取student.xml的pathString path = JsoupDemo5.class.getClassLoader().getResource("student.xml").getPath();//2.獲取Document對象Document document = Jsoup.parse(new File(path), "utf-8");//3.查詢name標簽/*div{}*/Elements elements = document.select("name");System.out.println(elements);System.out.println("=----------------");//4.查詢id值為itcast的元素Elements elements1 = document.select("#itcast");System.out.println(elements1);System.out.println("----------------");//5.獲取student標簽并且number屬性值為heima_0001的age子標簽//5.1.獲取student標簽并且number屬性值為heima_0001Elements elements2 = document.select("student[number=\"heima_0001\"]"); // 字符串轉義嵌套System.out.println(elements2);System.out.println("----------------");//5.2獲取student標簽并且number屬性值為heima_0001的age子標簽Elements elements3 = document.select("student[number=\"heima_0001\"] > age");System.out.println(elements3);} }

    xml_解析_Jsoup_根據Xpath查詢

    * 快捷查詢方式:
    ? ? 1. selector:選擇器
    ? ? ? ? ? ? * 使用的方法:Elements?? ?select?(String cssQuery)
    ? ? ? ? ? ? ? ? * 語法:參考Selector類中定義的語法
    ? ? 2. XPath:XPath即為XML路徑語言,它是一種用來確定XML(標準通用標記語言的子集)文檔中某部分位置的語言。
    ? ? ? ? ? ? * 使用Jsoup的Xpath需要額外導入jar包。
    ? ? ? ? ? ? * 查詢w3cshool參考手冊,使用xpath的語法完成查詢
    ? ? ? ? ? ? * 代碼:...

    ??

    package cn.itcast.xml.jsoup;import cn.wanghaomiao.xpath.exception.XpathSyntaxErrorException; import cn.wanghaomiao.xpath.model.JXDocument; import cn.wanghaomiao.xpath.model.JXNode; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.select.Elements;import java.io.File; import java.io.IOException; import java.util.List;/*** XPath查詢*/ public class JsoupDemo6 {public static void main(String[] args) throws IOException, XpathSyntaxErrorException {//1.獲取student.xml的pathString path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();//2.獲取Document對象Document document = Jsoup.parse(new File(path), "utf-8");//3.根據document對象,創建JXDocument對象JXDocument jxDocument = new JXDocument(document);//4.結合xpath語法查詢//4.1查詢所有student標簽List<JXNode> jxNodes = jxDocument.selN("//student");for (JXNode jxNode : jxNodes) {System.out.println(jxNode);}System.out.println("--------------------");//4.2查詢所有student標簽下的name標簽List<JXNode> jxNodes2 = jxDocument.selN("//student/name");for (JXNode jxNode : jxNodes2) {System.out.println(jxNode);}System.out.println("--------------------");//4.3查詢student標簽下帶有id屬性的name標簽List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");for (JXNode jxNode : jxNodes3) {System.out.println(jxNode);}System.out.println("--------------------");//4.4查詢student標簽下帶有id屬性的name標簽 并且id屬性值為itcastList<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");for (JXNode jxNode : jxNodes4) {System.out.println(jxNode);}} }

    加油~? ?開始學習JavaWeb~

    總結

    以上是生活随笔為你收集整理的XML学习笔记02【xml_解析】的全部內容,希望文章能夠幫你解決所遇到的問題。

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