麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 開發(fā) > Java > 正文

Java對XML文件增刪改查操作示例

2024-07-14 08:43:17
字體:
供稿:網(wǎng)友

本文實例講述了Java對XML文件增刪改查操作。分享給大家供大家參考,具體如下:

xml文件:

<?xml version="1.0" encoding="UTF-8"?><books>  <book>    <name>哈里波特</name>    <price>10</price>    <memo>這是一本很好看的書。</memo>  </book>  <book id="B02">    <name>三國演義</name>    <price>10</price>    <memo>四大名著之一。</memo>  </book>  <book id="B03">    <name>水滸</name>    <price>6</price>    <memo>四大名著之一。</memo>  </book>  <book id="B04">    <name>紅樓</name>    <price>5</price>    <memo>四大名著之一。</memo>  </book></books>

增刪改查 Test.java

import java.io.File;import java.io.FileOutputStream;import org.w3c.dom.*;import javax.xml.parsers.*;import javax.xml.transform.*;import javax.xml.transform.dom.DOMSource;import javax.xml.transform.stream.*;import javax.xml.xpath.*;public class Test {  public static void main(String[] args) {    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();    Element theBook = null, theElem = null, root = null;    try {      factory.setIgnoringElementContentWhitespace(true);      DocumentBuilder db = factory.newDocumentBuilder();      Document xmldoc = (Document) db.parse(new File("Test.xml"));      root = xmldoc.getDocumentElement();      // --- 新建一本書開始 ----      theBook = xmldoc.createElement("book");      theElem = xmldoc.createElement("name");      theElem.setTextContent("新書");      theBook.appendChild(theElem);      theElem = xmldoc.createElement("price");      theElem.setTextContent("20");      theBook.appendChild(theElem);      theElem = xmldoc.createElement("memo");      theElem.setTextContent("新書的更好看。");      theBook.appendChild(theElem);      root.appendChild(theBook);      System.out.println("--- 新建一本書開始 ----");      output(xmldoc);      // --- 新建一本書完成 ----      // --- 下面對《哈里波特》做一些修改。 ----      // --- 查詢找《哈里波特》----      theBook = (Element) selectSingleNode("/books/book[name='哈里波特']",          root);      System.out.println("--- 查詢找《哈里波特》 ----");      output(theBook);      // --- 此時修改這本書的價格 -----      theBook.getElementsByTagName("price").item(0).setTextContent("15");// getElementsByTagName返回的是NodeList,所以要跟上item(0)。另外,getElementsByTagName("price")相當于xpath的".//price"。      System.out.println("--- 此時修改這本書的價格 ----");      output(theBook);      // --- 另外還想加一個屬性id,值為B01 ----      theBook.setAttribute("id", "B01");      System.out.println("--- 另外還想加一個屬性id,值為B01 ----");      output(theBook);      // --- 對《哈里波特》修改完成。 ----      // --- 要用id屬性刪除《三國演義》這本書 ----      theBook = (Element) selectSingleNode("/books/book[@id='B02']", root);      System.out.println("--- 要用id屬性刪除《三國演義》這本書 ----");      output(theBook);      theBook.getParentNode().removeChild(theBook);      System.out.println("--- 刪除后的XML ----");      output(xmldoc);      // --- 再將所有價格低于10的書刪除 ----      NodeList someBooks = selectNodes("/books/book[price<10]", root);      System.out.println("--- 再將所有價格低于10的書刪除 ---");      System.out.println("--- 符合條件的書有 " + someBooks.getLength()          + "本。 ---");      for (int i = 0; i < someBooks.getLength(); i++) {        someBooks.item(i).getParentNode().removeChild(someBooks.item(i));      }      output(xmldoc);      saveXml("Test1_Edited.xml", xmldoc);    } catch (Exception e) {      e.printStackTrace();    }  }  /**   * 將node的XML字符串輸出到控制臺   *   * @param node   */  public static void output(Node node) {    TransformerFactory transFactory = TransformerFactory.newInstance();    try {      Transformer transformer = transFactory.newTransformer();      transformer.setOutputProperty("encoding", "gb2312");      transformer.setOutputProperty("indent", "yes");      DOMSource source = new DOMSource();      source.setNode(node);      StreamResult result = new StreamResult();      result.setOutputStream(System.out);      transformer.transform(source, result);    } catch (Exception e) {      e.printStackTrace();    }  }  /**   * 查找節(jié)點,并返回第一個符合條件節(jié)點   *   * @param express   * @param source   * @return   */  public static Node selectSingleNode(String express, Object source) {    Node result = null;    XPathFactory xpathFactory = XPathFactory.newInstance();    XPath xpath = xpathFactory.newXPath();    try {      result = (Node) xpath.evaluate(express, source, XPathConstants.NODE);    } catch (XPathExpressionException e) {      e.printStackTrace();    }    return result;  }  /**   * 查找節(jié)點,返回符合條件的節(jié)點集。   * @param express   * @param source   * @return   */  public static NodeList selectNodes(String express, Object source) {    NodeList result = null;    XPathFactory xpathFactory = XPathFactory.newInstance();    XPath xpath = xpathFactory.newXPath();    try {      result = (NodeList) xpath.evaluate(express, source,          XPathConstants.NODESET);    } catch (XPathExpressionException e) {      e.printStackTrace();    }    return result;  }  /**   * 將Document輸出到文件   * @param fileName   * @param doc   */  public static void saveXml(String fileName, Document doc) {    TransformerFactory transFactory = TransformerFactory.newInstance();    try {      Transformer transformer = transFactory.newTransformer();      transformer.setOutputProperty("indent", "yes");      DOMSource source = new DOMSource();      source.setNode(doc);      StreamResult result = new StreamResult();      result.setOutputStream(new FileOutputStream(fileName));      transformer.transform(source, result);    } catch (Exception e) {      e.printStackTrace();    }  }}

 

希望本文所述對大家java程序設(shè)計有所幫助。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 免费观看一区二区三区 | 日本大片在线播放 | 91久久夜色精品国产网站 | 国产一级性生活视频 | 欧美成人性生活片 | 海角在线观看91一区二区 | 成人店女老板视频在线看 | 渔夫荒淫艳史 | 91九色视频在线观看 | 免费毛片a线观看 | 国产成人精品午夜视频' | 99国产精品国产免费观看 | 亚洲成人中文字幕在线 | 欧洲精品久久久久69精品 | 噜噜噜躁狠狠躁狠狠精品视频 | 欧美一区二区三区不卡免费观看 | av在线影片 | 免费观看视频在线 | 99欧美视频 | 久久视频精品 | 特大黑人videos与另类娇小 | 国产精品自拍av | 日韩毛片一区二区三区 | 成人在线免费观看小视频 | 国产流白浆高潮在线观看 | 精品亚洲视频在线 | 7777网站| 97视频 | 草操影院 | 羞羞视频免费观看入口 | 蜜桃传媒视频麻豆第一区免费观看 | av电影免费观看 | 91av视频大全| 最新一区二区三区 | 黄色片视频观看 | 免费看欧美一级特黄a大片 久久免费视频一区二区三区 | 国产一区日韩精品 | 成人在线观看一区二区 | 日本黄色一级毛片 | 美女又黄又www| 免费观看黄色一级视频 |