第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

Java眼中的XML---文件讀取

難度初級(jí)
時(shí)長 3小時(shí) 0分
學(xué)習(xí)人數(shù)
綜合評(píng)分9.63
323人評(píng)價(jià) 查看評(píng)價(jià)
9.9 內(nèi)容實(shí)用
9.5 簡潔易懂
9.5 邏輯清晰
  • 常用的節(jié)點(diǎn)類型

    查看全部
  • 四種解析xml文件的方式:DOM、SAX、DOM4J、JDOM

    查看全部
  • xml的作用

    查看全部
    0 采集 收起 來源:初次邂逅 XML

    2018-05-21

  • books.xml實(shí)例

    查看全部
    0 采集 收起 來源:初次邂逅 XML

    2018-05-21

  • xml結(jié)構(gòu)簡介

    查看全部
    0 采集 收起 來源:初次邂逅 XML

    2018-05-21

  • 常用的節(jié)點(diǎn)類型

    查看全部
  • xml文件解析sax>dom>dom4j>jdom

    查看全部
  • SAX解析XML的速度比DOM的塊,
    SAX的解析XML的解析器,需要重寫startElement()開始解析的方法and endElemaent()方法 結(jié)束解析的方法and characters()方法
    重寫charaters()方法時(shí),String(byte[] bytes,int offset,int length)的構(gòu)造方法進(jìn)行數(shù)組的傳遞
    再去除解析時(shí)多余空格
    if(!value.trim().equals("")){
    System.out.println(value);
    }


    使用 SAX 解析 XML 文件的節(jié)點(diǎn)名和節(jié)點(diǎn)間文本

    startElement方法——String qName(第三個(gè)參數(shù)):節(jié)點(diǎn)名

    startElement方法——Attributes attributes(第四個(gè)參數(shù)):節(jié)點(diǎn)名的屬性操作

    characters方法——char[] ch(第一個(gè)參數(shù)):xml整個(gè)文本內(nèi)容,所以需截取想要的內(nèi)容

    如圖代碼+以下代碼

    public void endElement(String uri, String localName, String qName)
    throws SAXException {
    //調(diào)用DefaultHandler類的endElement方法
    super.endElement(uri, localName, qName);
    //判斷是否針對(duì)一本書已經(jīng)遍歷結(jié)束
    if (qName.equals("book")) {
    System.out.println("======================結(jié)束遍歷某一本書的內(nèi)容=================");
    }
    }
    characters(char[] ch, int start, int length) 方法總結(jié):

    簡單來說解析器首先在startDocument之后會(huì)讀取XML中的字符串(從根節(jié)點(diǎn)開始一直到根節(jié)點(diǎn)結(jié)束)并放入ch[]字符數(shù)組中去,然后在解析到#TEXT節(jié)點(diǎn)(包括空格和換行符)時(shí)使用start來標(biāo)記字符在ch[]數(shù)組中的起始位置,length標(biāo)記長度,然后調(diào)用character方法,character方法默認(rèn)不會(huì)進(jìn)行任何處理,想進(jìn)行處理需要重寫方法。
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    // TODO Auto-generated method stub
    super.characters(ch, start, length);
    value = new String(ch, start, length);
    if (!value.trim().equals("")) {
    System.out.println("節(jié)點(diǎn)值是:" + value);
    }
    }

    查看全部
  • 獲取xml的標(biāo)簽
    開始:startElement(String uri, String localName, String qName,Attributes attributes)
    獲取屬性名:attributes.getQName(i);獲取屬性值:attributes.getValue(i)
    結(jié)束:endElement(String uri, String localName, String qName)

    解析xml元素(重寫startElement()方法)
    1. 調(diào)用DefaultHanlder 的startElement()方法
    super.startElement(uri,localName,qName,attributes);
    2. 開始解析book元素屬性
    /**
    * 解析xml元素
    */
    @Override
    public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
    // 調(diào)用父類(DefaultHandler)的startElement方法
    super.startElement(uri, localName, qName, attributes);
    // 開始解析book元素的屬性
    if (qName.equals("book")) {
    // //已知book元素下屬性的名稱,根據(jù)屬性名稱獲取屬性值
    // String value = attributes.getValue("id");
    // System.out.println("book的屬性值是:" + value);
    // 不知道book元素下屬性的名稱以及個(gè)數(shù),如何獲取屬性名以及屬性值
    int num = attributes.getLength();
    for (int i = 0; i < num; i++) {
    System.out.print("book元素的第" + (i + 1) + "個(gè)屬性名是:"
    + attributes.getQName(i));
    System.out.println("---屬性值是:" + attributes.getValue(i));
    }

    }
    }

    查看全部
  • SAX方式解析xml步驟
    1.通過SAXParserFactory的靜態(tài)newInstance()方法獲取一個(gè)SAXParserFactory的對(duì)象。

    SAXParserFactory factory = SAXParserFactory.newInstance();

    2.通過SAXParserFactory對(duì)象的newSAXParser()方法返回一個(gè)SAXParser類的對(duì)象。

    SAXParser parser = factory.newSAXParser();

    3.創(chuàng)建一個(gè)類繼承DefaultHandler,重寫其中的一些方法并創(chuàng)建類的實(shí)例.

    類SAXParserHandler implements DefaultHandler;

    4.通過SAXParser類的Parse(Stringname,df)方法解析xml文件,參數(shù)Stringname為路徑名,df為繼承于DefaultHandler類的實(shí)例化對(duì)象,不需要定義變量存儲(chǔ)返回的類型.

    SAX是按節(jié)點(diǎn)順序進(jìn)行解析,遇到xml的聲明即開始解析,遇到最后一個(gè)節(jié)點(diǎn)的尾節(jié)點(diǎn)便結(jié)束解析,需要用戶自己定義一個(gè)類繼承于DefaultHandler類來解析,遇到開始標(biāo)簽節(jié)點(diǎn)便通過startElement開始解析節(jié)點(diǎn),遇到結(jié)束標(biāo)簽節(jié)點(diǎn)便通過endElement結(jié)束解析,再遇到開始節(jié)點(diǎn)繼續(xù)通過startElement解析,一直循環(huán)直到xml文件最后的結(jié)束標(biāo)簽節(jié)點(diǎn).

    5.在繼承于DefaultHandler這個(gè)類中需要重寫父類的startElement()和endElement()方法,來進(jìn)行開始節(jié)點(diǎn)與結(jié)束節(jié)點(diǎn)的解析,再重寫startDocument()方法與endDocument()方法來標(biāo)識(shí)解析的開始與結(jié)束.

    public class SAXParserHandler extends DefaultHandler {

    /**
    * 用來標(biāo)識(shí)解析開始
    */
    public void startDocument() throws SAXException {
    super.startDocument();
    System.out.println("SAX解析開始");
    }

    /**
    * 解析xml元素節(jié)點(diǎn)開始
    */
    public void startElement(String uri, String localName, String qName,
    Attributes attributes) throws SAXException {
    super.startElement(uri, localName, qName, attributes);
    System.out.println("解析xml元素開始");
    }

    /**
    * 處理文本內(nèi)容(獲取的是整個(gè)XML文本內(nèi)容)
    */
    public void characters(char[] ch, int start, int length)
    throws SAXException {
    super.characters(ch, start, length);
    System.out.println("文本處理中...");
    }

    /* 解析xml元素節(jié)點(diǎn)結(jié)束
    */
    public void endElement(String uri, String localName, String qName)
    throws SAXException {
    super.endElement(uri, localName, qName);
    System.out.println("解析xml元素結(jié)束");
    }

    /**
    * 用來標(biāo)識(shí)解析結(jié)束
    */
    public void endDocument() throws SAXException {
    super.endDocument();
    System.out.println("SAX解析結(jié)束");
    }

    6.創(chuàng)建SAXParserHandler對(duì)象
    ??????? SAXParserHandler handler = new SAXParserHandler()
    7.調(diào)用parse(url,handler實(shí)例)方法
    ??????? parser.parse("book.xml",handler);

    查看全部
  • 解析文件節(jié)點(diǎn)以及子節(jié)點(diǎn)的值
    1.先獲取子節(jié)點(diǎn),Node下有方法getChildNodes()來獲取某個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)的集合,返回NodeList類型.
    NodeList childNodes=book.getChildNodes()//包含book節(jié)點(diǎn)所有的子節(jié)點(diǎn),兩個(gè)標(biāo)簽之間的所有內(nèi)容都看成是子節(jié)點(diǎn).
    2.通過childNodes的getLength()方法返回字點(diǎn)的個(gè)數(shù)(空格與換行字符看成為一個(gè)文本節(jié)點(diǎn),標(biāo)簽與結(jié)束標(biāo)簽看成一個(gè)元素節(jié)點(diǎn))
    3.通過NodeList的item(i)獲取指定位置子節(jié)點(diǎn)的名稱返回Node類型.再用Node類型的getNodeName()方法就可以獲取節(jié)點(diǎn)名
    Node childnode=childNodes.item(i);
    String name=childnode.getNodeName();
    可以通過Node類的getNodeType()來區(qū)分文本類型的node以及元素類型的node,看當(dāng)前Node類型是否與Node."節(jié)點(diǎn)類型英文全稱"相同.
    if(childnode.getNodeType==Node.ELEMENT_NODE)
    {System.out.println(name)}
    4.不能直接通過Node的getNodeValue()來獲取節(jié)點(diǎn)的值,因?yàn)樵毓?jié)點(diǎn)的nodeValue的返回值為null而且標(biāo)簽之間的文本被看做是該標(biāo)簽的子節(jié)點(diǎn).所以要用Node的getFirstChild()此時(shí)獲取的子節(jié)點(diǎn)為文本節(jié)點(diǎn),Text節(jié)點(diǎn)類型的nodeValue返回值為節(jié)點(diǎn)內(nèi)容,再getNodeValue()。
    或者直接用Node的getTextContent()方法直接獲取節(jié)點(diǎn)值。
    如果該Node節(jié)點(diǎn)還存在其他子節(jié)點(diǎn)并且有節(jié)點(diǎn)值<name><a>呵呵呵</a>華以及咯</name>,那么用getFirstChild().getNodeValue()一樣是null,因?yàn)楂@取的子節(jié)點(diǎn)仍然是element類型的
    如果用Node的getTextContent(),一樣會(huì)把<a>元素節(jié)點(diǎn)當(dāng)成是Content輸出。 結(jié)果為呵呵呵華以及咯。

    查看全部
  • document.getElementByTagName(),獲取標(biāo)簽集合<br>
    2.node.getAttribute(),獲取屬性集合(應(yīng)該是一個(gè)Map集合)<br>
    3.NodeList集合(標(biāo)簽集合) NameNodeMap集合(屬性集合)<br>

    1.獲取book節(jié)點(diǎn)的子節(jié)點(diǎn)。NodeList childNodes =book.getChildNodes();<br>
    2.獲取book下子節(jié)點(diǎn)的節(jié)點(diǎn)內(nèi)容的兩種方式:<br>
    1)childNodes.item(index).getFirstChild().getNodeValue();<br>
    2)childNodes.item(index).getTextContent();<br>
    第一種方式在其下面還有子節(jié)點(diǎn)時(shí),會(huì)因?yàn)槭荅lement節(jié)點(diǎn)所以默認(rèn)的getNodeValue()返回值是null;<br>
    第二章方式在其下面還有子節(jié)點(diǎn)時(shí),會(huì)將子節(jié)點(diǎn)內(nèi)容與當(dāng)前節(jié)點(diǎn)內(nèi)容一起獲取。
    注:在獲取當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)時(shí),當(dāng)前節(jié)點(diǎn)下的空格與回車符會(huì)被當(dāng)做Text類型的子節(jié)點(diǎn)獲取(#Test)。

    查看全部
  • 使用Dom解析xml文件的屬性節(jié)點(diǎn)。
    在不知道節(jié)點(diǎn)屬性的個(gè)數(shù)和屬性名時(shí):
    1、通過document.getElementByTagName("標(biāo)簽名")獲得所有標(biāo)簽名的節(jié)點(diǎn),得到一個(gè)NodeList集合
    2、通過NodeList.getLength()獲得集合長度,遍歷集合
    3、Node node = NodeList.item(index)獲得里面的節(jié)點(diǎn)
    4、通過NamedNodeMap attrs = node.getAttributes()獲取所有屬性集合
    5、通過attrs.getLength()遍歷集合,Node attr = atrrs.item(index)
    6、attr.getNodeName()獲得屬性名,attr.getNodeValue()獲取屬性值
    前提已經(jīng)知道book節(jié)點(diǎn)有且只有1個(gè)id屬性,將book節(jié)點(diǎn)進(jìn)行強(qiáng)制類型轉(zhuǎn)換,轉(zhuǎn)換成element類型。
    1、通過document.getElementByTagName("標(biāo)簽名")獲得所有標(biāo)簽名的節(jié)點(diǎn),得到一個(gè)NodeList集合
    2、通過NodeList.getLength()獲得集合長度,遍歷集合
    3、element book=(element)bookList.item(i);//強(qiáng)制轉(zhuǎn)換為element類型
    4、string attrValue = book.getAttribute("id");

    DOM 方式解析 XML
    ? DocumentBuilder db =
    DocumentBuilderFactory.newInstance().newDocumentBuilder();
    ? // 通過DocumentBuilder對(duì)象的parse方法加載books.xml文件到當(dāng)前項(xiàng)目下
    ? Document document = db.parse("books.xml");
    ? // 通過標(biāo)簽名獲取節(jié)點(diǎn)集合,? 獲取所有book節(jié)點(diǎn)的集合
    ? NodeList bookList = document.getElementsByTagName("book");?
    ? // 遍歷每一個(gè)book節(jié)點(diǎn)
    ? for(int i = 0; i < bookList.getLength(); i ++){
    ?????? // 通過 item(i) 方法 獲取 一個(gè)book節(jié)點(diǎn),nodeList的索引值從 0 開始
    ?????? Node book = bookList.item(i);
    ?????? // 獲取 book 節(jié)點(diǎn)的所有屬性的集合
    ?????? NameNodeMap attrs = book.getAttributes();
    ?????? // 遍歷 book 的屬性
    ?????? for(int j = 0; j < attrs.getLength(); j ++){
    ?????????? // 通過 item(index) 方法獲取 book 節(jié)點(diǎn)的某一屬性
    ?????????? Node attr = attrs.item(j);?
    ????????? // 獲得屬性名稱
    ?????????? System.out.print("屬性名:" + attr.getNodeName());
    ?????????? System.out.println("---屬性值:" + attr.getNodeValue());
    ?????? }
    ? }

    查看全部
  • 獲取xml文件內(nèi)容的
    四種解析方式:DOM SAX DOM4J JDOM
    DOM、SAX :java 官方方式,不需要下載jar包
    DOM4J、JDOM :第三方,需要網(wǎng)上下載jar包
    DOM使用步驟:
    準(zhǔn)備工作
    1、創(chuàng)建一個(gè)DocumentBuilderFactory的對(duì)象
    DocumentBuilderFactory dbf = DocumnetBuilderFactory.instance();
    2、創(chuàng)建一個(gè)DocumentBuilder的對(duì)象
    DocumentBuilder db = dbf.newDocumentBuilder();
    3、通過DocumentBuilder對(duì)象的parse方法加載xml文件到當(dāng)前項(xiàng)目
    Document document = db.parse("*.xml");

    查看全部
  • 不同系統(tǒng)間通信、不同軟件間通信、不同平臺(tái)間通信使用xml文件
    XML文件用來存儲(chǔ)數(shù)據(jù)和傳輸數(shù)據(jù)
    XML存儲(chǔ)結(jié)構(gòu)為樹狀
    xml聲明:<?xml version="1.0"encoding="utf-8"? >

    XML作用:
    不同應(yīng)用程序之間通信、傳輸信息(訂票程序和支付程序)
    不同系統(tǒng)間的通信(例:Windows系統(tǒng)和IOS系統(tǒng))
    不同平臺(tái)間的數(shù)據(jù)共享(手機(jī)端和PC端)
    不同APP之間的通信,不同的平臺(tái)間的通信,不同平臺(tái)間的數(shù)據(jù)共享。XML文件主要用于存儲(chǔ)以及傳輸信息。
    通過xml文件存儲(chǔ)小型數(shù)據(jù)。

    查看全部
    0 采集 收起 來源:初次邂逅 XML

    2018-04-30

舉報(bào)

0/150
提交
取消
課程須知
本課程是 Java 的中級(jí)課程,需要各位小伙伴們熟悉 Java 面向?qū)ο蟮乃枷耄⒛苁炀氄莆?Java I/O 的相關(guān)知識(shí)。對(duì)如何將內(nèi)容寫入 XML 文件感興趣的小伙伴們,可以進(jìn)入《Java 眼中的 XML --- 文件寫入》一探究竟
老師告訴你能學(xué)到什么?
1、XML 的基本概念 2、XML 在實(shí)際項(xiàng)目開發(fā)中的的用途和優(yōu)點(diǎn) 3、如何通過 Java 解析 XML

微信掃碼,參與3人拼團(tuán)

微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復(fù)購買,感謝您對(duì)慕課網(wǎng)的支持!