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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

使用JAXP对XML文档进行DOM解析

發(fā)布時(shí)間:2023/12/10 asp.net 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用JAXP对XML文档进行DOM解析 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、XML解析方式分為兩種:dom和sax

  • dom:(Document Object Model,即文檔對(duì)象模型)是W3C組織推薦的解析XML的一種方式。
  • sax:(Simple API for XML)不是官方標(biāo)準(zhǔn),但它是XML社區(qū)事實(shí)上的標(biāo)準(zhǔn),幾乎所有的XML解析器都支持它。

dom和sax解析方法的區(qū)別:

  • dom:對(duì)文檔CRUD(增刪改查)比較方便,缺點(diǎn):占用內(nèi)存比較大(將xml文件全部讀入內(nèi)存)。
  • sax:占用內(nèi)存較少,解析速度快(從上往下讀一行解析一行)。缺點(diǎn):只適合讀取,不適合CRUD。

XML解析開發(fā)包:Jaxp(sun)、Jdom、dom4j

今天學(xué)習(xí)Jaxp:

二、使用JAXP對(duì)XML文檔進(jìn)行DOM解析:

?

private static String filename="src/exam.xml"; public static Document getDocument() throws Exception{//1創(chuàng)建工廠DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();//2得到dom解析器對(duì)象DocumentBuilder builder=factory.newDocumentBuilder();//3解析xml文檔,得到代表文檔的documentreturn builder.parse(filename);}

更加形象的描述為下圖:

增,刪,改 需要將更新后的內(nèi)容在寫到xml中

public static void writeXml(Document document) throws TransformerException{TransformerFactory factory=TransformerFactory.newInstance();Transformer tf=factory.newTransformer();//transform(Source xmlSource, Result outputTarget)tf.transform(new DOMSource(document), new StreamResult(filename) );}

三、實(shí)戰(zhàn)演練:

books.xml

<?xml version="1.0" encoding="UTF-8" standalone="no"?><書架><書><書名 name="xxx">影響力</書名><作者>羅伯特.西奧迪尼</作者><售價(jià)>90</售價(jià)></書><書><書名>JavaScript</書名><作者>JS</作者><售價(jià)>45</售價(jià)></書> </書架>

讀取XML文件,JUnit測(cè)試:

@Testpublic void read() throws ParserConfigurationException, SAXException, IOException {DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document document=builder.parse("src/books.xml");NodeList list= document.getElementsByTagName("書名");Node node= list.item(0);String content=node.getTextContent();System.out.println(content);}

遞歸遍歷XML文件中的所有節(jié)點(diǎn)

@Testpublic void read1() throws ParserConfigurationException, SAXException, IOException {DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document document=builder.parse("src/books.xml");Node root=document.getElementsByTagName("書架").item(0);list(root); }/** 遞歸遍歷XML文件中的所有節(jié)點(diǎn)* */public void list(Node node){if(node instanceof Element){System.out.println(node.getNodeName());}NodeList childs= node.getChildNodes();for(int i=0;i<childs.getLength();i++){Node child=childs.item(i);list(child);}}

添加節(jié)點(diǎn)到XML文件中:

@Testpublic void add() throws ParserConfigurationException, SAXException, IOException, TransformerException{DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document document=builder.parse("src/books.xml");Element price=document.createElement("售價(jià)");//創(chuàng)建節(jié)點(diǎn)//把創(chuàng)建的節(jié)點(diǎn)添加到第一本書price.setTextContent("90");Element book=(Element) document.getElementsByTagName("書").item(0);book.appendChild(price);//把更新后的文檔TransformerFactory tfactory=TransformerFactory.newInstance();Transformer tf=tfactory.newTransformer();tf.transform(new DOMSource(document), new StreamResult("src/books.xml"));}

為標(biāo)簽添加屬性:

@Testpublic void addAttr() throws ParserConfigurationException, SAXException, IOException, TransformerException{DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document document=builder.parse("src/books.xml");Element bookname=(Element) document.getElementsByTagName("書名").item(0);bookname.setAttribute("name", "xxx");//把更新后的文檔TransformerFactory tfactory=TransformerFactory.newInstance();Transformer tf=tfactory.newTransformer();tf.transform(new DOMSource(document), new StreamResult("src/books.xml"));}

刪除操作:

@Testpublic void delete() throws ParserConfigurationException, SAXException, IOException, TransformerException{DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();DocumentBuilder builder=factory.newDocumentBuilder();Document document=builder.parse("src/books.xml");Element bookname=(Element) document.getElementsByTagName("售價(jià)").item(0);//把更新后的文檔Element e=(Element) document.getElementsByTagName("書").item(0);e.removeChild(bookname);TransformerFactory tfactory=TransformerFactory.newInstance();Transformer tf=tfactory.newTransformer();tf.transform(new DOMSource(document), new StreamResult("src/books.xml"));}

快樂學(xué)習(xí),輕松掌握!

?

轉(zhuǎn)載于:https://www.cnblogs.com/lyjs/p/4858814.html

總結(jié)

以上是生活随笔為你收集整理的使用JAXP对XML文档进行DOM解析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。