日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Java與XML:采用DOM操作XML文件

1.DOM介紹

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)貴南免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

DOM 是用與平臺和語言無關(guān)的方式表示XML文檔的官方 W3C 標(biāo)準(zhǔn)。DOM 是以層次結(jié)構(gòu)組織的節(jié)點(diǎn)或信息片斷的集合。這個層次結(jié)構(gòu)允許開發(fā)人員在樹中尋找特定信息。分析該結(jié)構(gòu)通常需要加載整個文檔和構(gòu)造層次結(jié)構(gòu), 然后才能做任何工作。 由于它是基于信息層次的,因而 DOM 被認(rèn)為是基于樹或基于對象的。DOM 以及廣義的基于樹的處理具有幾個優(yōu)點(diǎn)。首先,由于樹在內(nèi)存中是持久的,因此可以修改它以便應(yīng)用程序能對數(shù)據(jù)和結(jié)構(gòu)作出更改。 它還可以在任何時候在樹中上下導(dǎo)航, 而不是像 SAX 那樣是一次性的處理。 DOM使用起來也要簡單得多。

2.采用DOM解析XML文件

代碼實(shí)例:

 
 
 
 
  1. import java.io.FileInputStream;
  2. import java.io.FileNotFoundException;
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import javax.xml.parsers.DocumentBuilder;
  6. import javax.xml.parsers.DocumentBuilderFactory;
  7. import javax.xml.parsers.ParserConfigurationException;
  8. import org.w3c.dom.Document;
  9. import org.w3c.dom.Element;
  10. import org.w3c.dom.Node;
  11. import org.w3c.dom.NodeList;
  12. import org.xml.sax.SAXException;
  13. /** * @Author:胡家威
  14.  * @CreateTime:2011-9-6 下午10:12:00
  15.  * @Description:采用DOM解析XML文件
  16.  */
  17. public class DomXML {
  18.     public void domXMl(String fileName) {
  19.         try {
  20.             DocumentBuilder domBuilder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
  21.             InputStream input = new FileInputStream(fileName);
  22.             Document doc = domBuilder.parse(input);
  23.             Element root = doc.getDocumentElement();
  24.             NodeList students = root.getChildNodes();
  25.             if (students != null) {
  26.                 for (int i = 0, size = students.getLength(); i < size; i++) {
  27.                     Node student = students.item(i);
  28.                     if (student.getNodeType() == Node.ELEMENT_NODE) {
  29.                         String sexString = student.getAttributes().getNamedItem("性別").getNodeValue();
  30.                         System.out.println(sexString);
  31.                     }
  32.                     for (Node node = student.getFirstChild();
  33.  node != null; node = node.getNextSibling()) {
  34.                         if (node.getNodeType() == Node.ELEMENT_NODE) {
  35.                             if (node.getNodeName().equals("姓名")) {
  36.                                 String name = node.getFirstChild().getNodeValue();
  37.                                 System.out.println(name);
  38.                             }
  39.                             if (node.getNodeName().equals("年齡")) {
  40.                                 String age = node.getFirstChild().getNodeValue();
  41.                                 System.out.println(age);
  42.                             }
  43.                             if (node.getNodeName().equals("電話")) {
  44.                                 String tel = node.getFirstChild().getNodeValue();
  45.                                 System.out.println(tel);
  46.                             }
  47.                         }
  48.                     }
  49.                 }
  50.             }
  51.         }
  52.  catch (FileNotFoundException e) {
  53.             e.printStackTrace();
  54.         }
  55.  catch (ParserConfigurationException e) {
  56.             e.printStackTrace();
  57.         }
  58.  catch (SAXException e) {
  59.             e.printStackTrace();
  60.         }
  61.  catch (IOException e) {
  62.             e.printStackTrace();
  63.         }
  64.     }
  65.     public static void main(String[] args) {
  66.         DomXML xmlTest = new DomXML();
  67.         String fileName = "students.xml";
  68.         xmlTest.domXMl(fileName);
  69.     }
  70. }

目錄結(jié)構(gòu):在項目的根目錄下面放置一個XML文件

 
 
 
 
  1.  
  2. <學(xué)生花名冊> 
  3.     <學(xué)生 性別="男"> 
  4.         <姓名>李華 
  5.         <年齡>14 
  6.         <電話>6287555 
  7.      
  8.     <學(xué)生 性別="男"> 
  9.         <姓名>張三 
  10.         <年齡>16 
  11.         <電話>8273425 
  12.      
  13.  

運(yùn)行結(jié)果:

李華

14

6287555

張三

16

8273425

3.使用DOM操作XML文件,進(jìn)行增刪查改

代碼示例:

 
 
 
 
  1. import java.io.FileNotFoundException;
  2. import java.io.FileOutputStream;
  3. import java.io.IOException;
  4. import javax.xml.parsers.DocumentBuilderFactory;
  5. import javax.xml.parsers.ParserConfigurationException;
  6. import javax.xml.transform.Transformer;
  7. import javax.xml.transform.TransformerConfigurationException;
  8. import javax.xml.transform.TransformerException;
  9. import javax.xml.transform.TransformerFactory;
  10. import javax.xml.transform.dom.DOMSource;
  11. import javax.xml.transform.stream.StreamResult;
  12. import javax.xml.xpath.XPathConstants;
  13. import javax.xml.xpath.XPathExpressionException;
  14. import javax.xml.xpath.XPathFactory;
  15. import org.w3c.dom.Document;
  16. import org.w3c.dom.Element;
  17. import org.w3c.dom.Node;
  18. import org.w3c.dom.NodeList;
  19. import org.xml.sax.SAXException;
  20. /**
  21.  * @Author:胡家威
  22.  * @CreateTime:2011-9-23 下午09:08:03
  23.  * @Description:DOM操作XML文件,增刪查改
  24.  */
  25. public class DealXML {
  26.   public static void main(String[] args) {
  27.     try {
  28.       // Document-->Node
  29.       Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("products.xml");
  30.       Element root = document.getDocumentElement();
  31.       // 增加一個元素節(jié)點(diǎn)
  32.       Element newChild = document.createElement("project");
  33.       newChild.setAttribute("id", "NP001");// 添加id屬性
  34.       Element nelement = document.createElement("name");// 元素節(jié)點(diǎn)
  35.       nelement.setTextContent("New Project");
  36.       newChild.appendChild(nelement);
  37.       Element selement = document.createElement("start-date");
  38.       selement.setTextContent("March 20 1999");
  39.       newChild.appendChild(selement);
  40.       Element eelement = document.createElement("end-date");
  41.       eelement.setTextContent("July 30 2004");
  42.       newChild.appendChild(eelement);
  43.       root.appendChild(newChild);
  44.       // 查找一個元素節(jié)點(diǎn)
  45.       String expression = "/projects/project[3]";
  46.       Element node = (Element) selectSingleNode(expression, root);// 轉(zhuǎn)型一下
  47.       // 修改一個元素節(jié)點(diǎn)
  48.       node.getAttributeNode("id").setNodeValue("new "+node.getAttribute("id"));
  49.       // root.getElementsByTagName("project").item(2).setTextContent("");
  50.       expression = "/projects/project";
  51.       NodeList nodeList = selectNodes(expression, root);
  52.       nodeList.item(1).getAttributes().getNamedItem("id").setNodeValue("New Id");
  53.       // 刪除一個元素節(jié)點(diǎn)
  54.       expression = "/projects/project[2]";
  55.       node = (Element) selectSingleNode(expression, root);
  56.       root.removeChild(root.getFirstChild());
  57.       output(root, "newProjects.xml");
  58.     } catch (SAXException e) {
  59.       e.printStackTrace();
  60.     } catch (IOException e) {
  61.       e.printStackTrace();
  62.     } catch (ParserConfigurationException e) {
  63.       e.printStackTrace();
  64.     }
  65.   }
  66.   public static void output(Node node, String filename) {
  67.     TransformerFactory transFactory = TransformerFactory.newInstance();
  68.     try {
  69.       Transformer transformer = transFactory.newTransformer();
  70.       // 設(shè)置各種輸出屬性
  71.       transformer.setOutputProperty("encoding", "gb2312");
  72.       transformer.setOutputProperty("indent", "yes");
  73.       DOMSource source = new DOMSource();
  74.       // 將待轉(zhuǎn)換輸出節(jié)點(diǎn)賦值給DOM源模型的持有者(holder)
  75.       source.setNode(node);
  76.       StreamResult result = new StreamResult();
  77.       if (filename == null) {
  78.         // 設(shè)置標(biāo)準(zhǔn)輸出流為transformer的底層輸出目標(biāo)
  79.         result.setOutputStream(System.out);
  80.       } else {
  81.         result.setOutputStream(new FileOutputStream(filename));
  82.       }
  83.       // 執(zhí)行轉(zhuǎn)換從源模型到控制臺輸出流
  84.       transformer.transform(source, result);
  85.     } catch (TransformerConfigurationException e) {
  86.       e.printStackTrace();
  87.     } catch (TransformerException e) {
  88.       e.printStackTrace();
  89.     } catch (FileNotFoundException e) {
  90.       e.printStackTrace();
  91.     }
  92.   }
  93.   // 查找一個單獨(dú)的節(jié)點(diǎn)
  94.   private static Node selectSingleNode(String expression, Object source) {
  95.     try {
  96.       return (Node) XPathFactory.newInstance().newXPath().evaluate(expression, source, XPathConstants.NODE);
  97.     } catch (XPathExpressionException e) {
  98.       e.printStackTrace();
  99.       return null;
  100.     }
  101.   }
  102.   // 查找所有的節(jié)點(diǎn)
  103.   private static NodeList selectNodes(String expression, Object source) {
  104.     try {
  105.       return (NodeList) XPathFactory.newInstance().newXPath().evaluate(expression, source, XPathConstants.NODESET);
  106.     } catch (XPathExpressionException e) {
  107.       e.printStackTrace();
  108.       return null;
  109.     }
  110.   }
  111. }

上邊是修改前的,下邊的是修改了之后生成的XML文件


分享文章:Java與XML:采用DOM操作XML文件
本文地址:http://www.dlmjj.cn/article/djgjspp.html