亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

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

難度初級
時長 3小時 0分
學習人數
綜合評分9.63
323人評價 查看評價
9.9 內容實用
9.5 簡潔易懂
9.5 邏輯清晰
  • DOM4J 解析 xml 文件步驟
    1、創建一個 SAXReader 對象
    ????SAXReader saxReader = new SAXReader();
    2、將 xml 文件加載到 SAXReader 中,并獲取 document 對象
    ????Document document = saxReader.read(fileName);
    3、通過 getRootElement() 獲取根節點元素
    ????Element employeeRoot = document.getRootElement();
    4、通過 elementIterator() 獲取子節點元素,返回 Iterator 返回迭代器
    ????Iterator eles = eleRoot.elementIterator();
    5、通過 while 遍歷迭代器
    ????while(eles.hasNest()){
    ????Element ele = (Element)eles.next();}
    6、獲取屬性節點類似 JDOM 解析
    ????List<Attribute> attrs = ele.attributes();
    7、獲取元素節點名、值
    ????ele.getName() ele.getStringValue()/ele.getText()
    8、獲取屬性節點名、值
    ????ele.getName() ele.geValue()

    查看全部
  • 導入jar包的兩種方式:
    1.通過右鍵項目,選擇build Path下的Add External Archives導入系統任意路徑下的jar包。但是這種方式并沒有將jar包真正導入項目中,一旦遷移,則會丟失
    2.通過右鍵項目,新建lib文件夾,直接將jar包拷貝到lib文件夾下,然后再通過build Path將jar包導入進來

    查看全部
  • 在JDOM中存儲對象
    1.創建一個新的book類并將其實例化
    Book bookEntity = new Book();
    2.添加節點屬性值到book
    if(attrName.equals("id")){
    personEntity.setId(attrValue);
    }
    3.添加子節點屬性值到book
    if (child.getName().equals("name")) {
    bookEntity.setName(child.getValue());
    }
    else if (child.getName().equals("author")) {
    bookEntity.setAuthor(child.getValue());
    }
    else if (child.getName().equals("year")) {
    bookEntity.setYear(child.getValue());
    }
    else if (child.getName().equals("price")) {
    bookEntity.setPrice(child.getValue());
    }
    else if (child.getName().equals("language")) {
    bookEntity.setLanguage(child.getValue());
    }

    查看全部
  • JDOM 解析時亂碼的處理步驟:
    1)修改xml文件的編碼
    2)將InputStream封裝為一個InputStreamReader,并在InputStreamReader的構造函數中指定正確的編碼,然后將InputStreamReader傳入到SAXBuilder中就可以處理中文亂碼了
    利用代碼問題解決局部亂碼問題(需要利用InputStreamReader來解決)
    (1)InputStream in=new FIleStream("book.xml");
    (2)InputStreamReader isr = new InputStreamReader(in, "utf-8");
    (3)Document document = saxBuilder.build(isr);

    查看全部
  • DOM 解析
    獲取節點名、值:getNodeName() getNodeValue() getTextContent()
    獲取子節點:getChildNodes() 返回 NodeList
    獲取屬性節點:getAttributes() 返回 NamedNodeMap
    JDOM 解析
    獲取節點名、值:getName() getValue()
    獲取子節點:getChildren() 返回 List<Element>
    獲取屬性節點:getAttributes() 返回 List<Attribute>

    查看全部
  • //繼續進行解析
    for?(Element?book?:?bookList)?{
    ?System.out.println("===開始解析第"+(bookList.indexOf(book)+1)+"本書===");
    ?//解析book的屬性
    ?List<Attribute>?attrList?=?book.getAttributes();
    //????//知道節點下屬性名稱時,獲取節點值
    //????book.getAttributeValue("id");
    ?//遍歷attrList(針對不清楚book節點下屬性的名字和數量)
    ?for?(Attribute?attr?:?attrList)?{
    ??//遍歷屬性名
    ??String?attrName?=?attr.getName();
    ??//遍歷屬性值
    ??String?attrValue?=?attr.getValue();
    ??System.out.println("屬性名:"+attrName+"---屬性值:"+attrValue);
    ?}
    ?System.out.println("===結束解析第"+(bookList.indexOf(book)+1)+"本書===");
    }


    查看全部
  • JDOM的解析步驟
    1.獲取SAXBuilder對象
    2.將文件加載到SAXBuilder中,并獲取Document對象
    3.通過Document對象獲取文件的根節點
    4.有了根節點,通過根節點獲取它的孩子節點書的集合
    5.循環遍歷孩子節點集合,通過getAttributes方法獲取節點的屬性Attribute集合
    6.通過attribute的getName和getValue方法分別獲取屬性的名稱和值
    7.獲得book下的節點,通過book節點對象的getChildren()方法獲取子節點的集合
    8.再通過子節點的getName和getValue方法獲取節點名和節點的值

    查看全部
  • JDOM解析文件步驟
    準備:導入jar包
    1.創建一個SAXBuilder對象
    ????SAXBuilder saxbuilder=newSAXBuilder();
    2.創建輸入流,將xml文件加載到輸入流中
    ????Inputstream in=new FileInputstream("xxx.xml");
    3.通過SAXBuilder的Build方法將輸入流加載到saxb中獲取dom對象
    ????Document doc = saxbuilder.build(in);
    4.通過document對象獲取xml文件的根結點
    ????Element rootElement =doc.getRootElement();
    5.獲取根結點下的子節點的List集合


    JDOM 開始解析前的準備工作

    //進行對books.xml文件的JDOM解析
    //準備工作
    //1.創建一個SAXBuilder的對象
    SAXBuilder?saxBuilder?=?new?SAXBuilder();
    InputStream?in;
    try?{
    ?//2.創建一個輸入流,將xml文件加載到輸入流中來
    ?in?=?new?FileInputStream("books.xml");
    ?//3.通過saxBuilder的build方法,將輸入流加載到saxBuilder中
    ?Document?document?=?saxBuilder.build(in);
    ?//4.通過document對象獲取xml文件的根節點
    ?Element?rootElement?=?document.getRootElement();
    ?//5.獲取根節點下的子節點的List集合
    ?List<Element>?bookList?=?rootElement.getChildren();
    }?catch?(FileNotFoundException?e)?{
    ?e.printStackTrace();
    }?catch?(JDOMException?e)?{
    ?e.printStackTrace();
    }?catch?(IOException?e)?{
    ?e.printStackTrace();
    }


    查看全部
  • xml的SAX解析并將解析的內容及xml結構形式保存至Java對象中。
    SAX解析:
    1、獲取一個SAXParserFactory的實例:SAXParserFactory factory = SAXParserFactory.newInstance();
    2、通過factory獲取SAXParser實例:SAXParser parser = factory.newSAXParser();
    3、創建SAXParserHandler對象:SAXParserHandler handler = new SAXParserHandler();
    4、將xml文件和解析方式handler加載到SAXParser實例:parser.parse("books.xml",handler);
    解析的時候,是startElement-characters-endElement , characters解析完一個屬性,就到endElement,然后又解析一個屬性又到endElement,最后解析完全部屬性,到endElement又到startElement開始下一個節點。
    ArrayList保存對象 ArrayList<Book> BookList=new ArrayList<Book>();
    BookList.add(book);book=null;后繼續遍歷
    public void startElement(String uri, String localName, String qName,Attributes attributes) throws SAXException// qName是String類型節點名稱;attributes是Attributes類型的實例,屬性的意思;

    查看全部
  • /**
    ??*?獲取節點值
    ??*/
    ?@Override
    ?public?void?characters(char[]?ch,?int?start,?int?length)?throws?SAXException?{
    ??super.characters(ch,?start,?length);
    ??String?value?=?new?String(ch,?start,?length);
    ??if(!value.trim().equals("")){
    ???System.out.println("節點值:"+value);
    ??}
    ?}


    查看全部
  • ?/**
    ??*?用來遍歷xml文件的開始標簽
    ??*/
    ?@Override
    ?public?void?startElement(String?uri,?String?localName,?String?qName,?Attributes?attributes)?throws?SAXException?{
    ??//調用DefaultHandler類的startElement()方法
    ??super.startElement(uri,?localName,?qName,?attributes);
    ??//開始解析book元素的屬性
    ??if(qName.equals("book")){
    //???//已知book元素下屬性的名稱,根據屬性名稱獲取屬性值
    //???String?value?=?attributes.getValue("id");
    //???System.out.println("book的屬性值是:"+value);
    ???//不知道book元素下屬性的名稱以及個數,如何獲取屬性名以及屬性值
    ???int?num?=?attributes.getLength();
    ???for(int?i=0;i<num;i++){
    ????System.out.print("book元素的第"+(i+1)+"個屬性名:"+attributes.getQName(i));
    ????System.out.println("--屬性值:"+attributes.getValue(i));
    ???}
    ??}
    ?}


    查看全部
  • DOM:全部讀取先
    SAX解析:通過handler處理類逐個分析每個節點,從外到內逐個解析。。一個一個來
    startElement, endElement(開始標簽解析,結束標簽解析)

    步驟:
    1.通過SAXParserFactory的靜態newInstance()方法獲取SAXParserFactory實例factory
    SAXParserFactory factory = SAXParserFactory.newInstance();

    2.通過SAXParserFactory實例的newSAXParser()方法返回SAXParser實例parser
    SAXParser parser = factory.newSAXParser();
    parser.parse("路徑",handler類型對象);(需創建見3)

    3.創建一個類繼承DefaultHandler,重寫其中一些方法進行業務處理并創建這個類的實例handler
    創建一個package繼承DefaultHandler(。com那個)
    startElement()
    用于遍歷xml的開始標簽
    endElement()
    遍歷xml結束標簽
    startElement
    解析開始
    endElement
    解析結束

    SAX解析xml步驟
    1.通過SAXParseFactory的靜態newInstance()方法獲取SAXParserFactory實例factory
    2.通過SAXParserFactory實例的newSAXParser()方法返回SAXParser實例parser
    3.創建一個類繼承DefaultHandle,重寫方發進行業務已處理創建這個類的實例handle

    查看全部
  • SAX解析原理

    查看全部
  • DOM解析XML文件的節點名與節點值

    //解析book節點的子節點
    NodeList?childNodes?=?book.getChildNodes();
    //遍歷childNodes獲取每個節點的節點名和節點值
    System.out.println("第"+(i+1)+"本書共有"+childNodes.getLength()+"個子節點");
    for(int?k=0;k<childNodes.getLength();k++){
    ?//區分出text類型的node以及element類型的node
    ?if(childNodes.item(k).getNodeType()==Node.ELEMENT_NODE){
    ??//獲取element類型節點的節點名
    ??System.out.print("第"+(k+1)+"個節點的節點名:"+childNodes.item(k).getNodeName());
    ??//獲取element類型節點的節點值
    ??//getFirstChild().getNodeValue()方法把第一個子節點的節點值輸出
    ??//System.out.println("--節點值是"+childNodes.item(k).getFirstChild().getNodeValue());
    ??//getTextContent()方法把element類型的node中的文本全部輸出
    ??System.out.println("--節點值:"+childNodes.item(k).getTextContent());
    ?}
    }


    查看全部
  • DOM解析XML文件的屬性名和屬性值

    ??//創建一個DocumentBuilderFactory的對象
    ??DocumentBuilderFactory?dbf?=?DocumentBuilderFactory.newInstance();
    ??
    ??//創建一個DocumentBuilder的對象
    ??try?{
    ???//創建DocumentBuilder對象
    ???DocumentBuilder?db?=?dbf.newDocumentBuilder();
    ???//通過DocumentBuilder對象的parser方法加載books.xml文件到當前項目下
    ???Document?document?=?db.parse("books.xml");
    ???//獲取所有book節點的集合
    ???NodeList?bookList?=?document.getElementsByTagName("book");
    ???//通過NodeList的getLength()方法獲取bookList的長度
    ???System.out.println("一共有"+bookList.getLength()+"本書");
    ???//遍歷每一個book節點
    ???for(int?i=0;i<bookList.getLength();i++){
    ????//前提:不知道屬性名和屬性個數
    //????//通過item(i)方法獲取一個book節點,NodeList的索引值從0開始
    //????Node?book?=?bookList.item(i);
    //????//獲取book節點的所有屬性集合
    //????NamedNodeMap?attrs?=?book.getAttributes();
    //????System.out.println("第"+(i+1)+"本書共有"+attrs.getLength()+"個屬性");
    //????//遍歷book的屬性
    //????for(int?j=0;j<attrs.getLength();j++){
    //?????//通過item(index)方法獲取book節點的某一個屬性
    //?????Node?attr?=?attrs.item(j);
    //?????//獲取屬性名
    //?????System.out.print("屬性名:"+attr.getNodeName());
    //?????//獲取屬性值
    //?????System.out.println("--屬性值:"+attr.getNodeValue());
    //????}
    ????
    ????//前提:已經知道book節點有且只能有1個id屬性
    ????//將book節點進行強制類型轉換,轉換成Element類型
    ????Element?book?=?(Element)bookList.item(i);
    ????//通過getAttribute("id")方法獲取屬性值
    ????String?attrValue?=?book.getAttribute("id");
    ????System.out.println("id屬性的屬性值為"+attrValue);
    ????
    ???}
    ??}?catch?(ParserConfigurationException?e)?{
    ???e.printStackTrace();
    ??}?catch?(SAXException?e)?{
    ???e.printStackTrace();
    ??}?catch?(IOException?e)?{
    ???e.printStackTrace();
    ??}


    查看全部

舉報

0/150
提交
取消
課程須知
本課程是 Java 的中級課程,需要各位小伙伴們熟悉 Java 面向對象的思想,并能熟練掌握 Java I/O 的相關知識。對如何將內容寫入 XML 文件感興趣的小伙伴們,可以進入《Java 眼中的 XML --- 文件寫入》一探究竟
老師告訴你能學到什么?
1、XML 的基本概念 2、XML 在實際項目開發中的的用途和優點 3、如何通過 Java 解析 XML

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!