源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JAVA操作XML实例分析

  • 时间:2021-03-16 13:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JAVA操作XML实例分析
本文实例讲述了JAVA操作XML的方法。分享给大家供大家参考。具体如下: java代码如下:
[u]复制代码[/u] 代码如下:
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import org.w3c.dom.*; import org.xml.sax.SAXException; 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=db.parse(new File("Test1.xml"));             root=xmldoc.getDocumentElement();             theBook=(Element) selectSingleNode("/books/book[name='哈里波特']", root);             System.out.println("--- 查询找《哈里波特》 ----");             Element nameNode=(Element)theBook.getElementsByTagName("price").item(0);             String name=nameNode.getFirstChild().getNodeValue();             System.out.println(name);             output(theBook);             System.out.println("=============selectSingleNode(books/book[name='哈里波特'], root)==================");             //--- 新建一本书开始 ----             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);             System.out.println("==============================");             //--- 新建一本书完成 ----             //--- 下面对《哈里波特》做一些修改。 ----             //--- 查询找《哈里波特》----             //--- 此时修改这本书的价格 -----             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 (ParserConfigurationException e) {             e.printStackTrace();         } catch (SAXException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         }     }     public static void output(Node node) {//将node的XML字符串输出到控制台         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 (TransformerConfigurationException e) {             e.printStackTrace();         } catch (TransformerException e) {             e.printStackTrace();         }       }     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;     }     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;     }     public static void saveXml(String fileName, Document doc) {//将Document输出到文件         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 (TransformerConfigurationException e) {             e.printStackTrace();         } catch (TransformerException e) {             e.printStackTrace();         } catch (FileNotFoundException e) {             e.printStackTrace();         }       } }
  XML文件如下:
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="GBK"?> <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>
希望本文所述对大家的java程序设计有所帮助。
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部