1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | package com.sun.xml; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.Iterator; import java.util.List; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; public class ReadXmlBySaxReader { public static void main(String[] args) throws IOException { String path= "C:\\Users\\Administrator\\Desktop\\bookstore.xml" ; Document document=getDocument(path); getNode(document); updateEle( "aaaa" , document,path); addEle(document, "编程书籍" , path); } public static Document getDocument(String path) throws UnsupportedEncodingException, FileNotFoundException{ SAXReader saxReader= new SAXReader(); File file= new File(path); Document document= null ; InputStreamReader inputStreamReader= new InputStreamReader( new FileInputStream(file)); try { document=saxReader.read(inputStreamReader); return document; } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null ; } public static void getNode(Document document){ Element element=document.getRootElement(); @SuppressWarnings ( "unchecked" ) List<Element> list=element.elements( "book" ); Iterator<Element> iterator=list.iterator(); while (iterator.hasNext()){ Element node=iterator.next(); Element element2=node.element( "title" ); System.out.println(element2.getText()); } System.out.println( "ss" ); } public static void updateEle(String text,Document document,String path) throws IOException{ Element element=document.getRootElement(); @SuppressWarnings ( "unchecked" ) List<Element> list=element.elements( "book" ); Iterator<Element> iterator=list.iterator(); while (iterator.hasNext()){ Element node=iterator.next(); Element element2=node.element( "title" ); System.out.println( "title为: " +element2.getText()); if (element2.getText().equals( "ss" )){ element2.setText( "java书籍" ); } } writeXml(document,path); } public static void addEle(Document document,String text,String path) throws IOException{ Element rootElement=document.getRootElement(); Element element=rootElement.addElement( "book" ); Element element2=element.addElement( "title" ); Element element3=element.addElement( "author" ); Element element4=element.addElement( "price" ); element2.setText(text); element3.setText( "万福" ); element4.setText( "39.0" ); writeXml(document, path); } public static void writeXml(Document document,String path) throws IOException{ OutputFormat outputFormat=OutputFormat.createPrettyPrint(); try { XMLWriter xmlWriter=(XMLWriter) new XMLWriter( new FileOutputStream(path),outputFormat); xmlWriter.write(document); xmlWriter.close(); } catch (UnsupportedEncodingException | FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } |