- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.util.Iterator;
- import java.util.List;
- import javax.xml.parsers.DocumentBuilder;
- import javax.xml.parsers.DocumentBuilderFactory;
- import javax.xml.parsers.SAXParser;
- import javax.xml.parsers.SAXParserFactory;
- import javax.xml.stream.XMLOutputFactory;
- import javax.xml.stream.XMLStreamWriter;
- import javax.xml.transform.Transformer;
- import javax.xml.transform.TransformerFactory;
- import javax.xml.transform.dom.DOMSource;
- import javax.xml.transform.stream.StreamResult;
- import org.dom4j.Attribute;
- import org.dom4j.CDATA;
- import org.dom4j.Comment;
- import org.dom4j.DocumentType;
- import org.dom4j.ElementHandler;
- import org.dom4j.ElementPath;
- import org.dom4j.Entity;
- import org.dom4j.Namespace;
- import org.dom4j.ProcessingInstruction;
- import org.dom4j.Text;
- import org.dom4j.Visitor;
- import org.dom4j.io.SAXReader;
- import org.dom4j.io.XMLWriter;
- import org.jdom.JDOMException;
- import org.jdom.input.SAXBuilder;
- import org.jdom.output.XMLOutputter;
- import org.w3c.dom.Document;
- import org.w3c.dom.Element;
- import org.w3c.dom.NodeList;
- import org.xml.sax.Attributes;
- import org.xml.sax.SAXException;
- import org.xml.sax.helpers.DefaultHandler;
- /**
- *
- * @author Love Eat large meat bun
- * @TD use the SAX DOM JDOM to build and parser xml file
- * @email hejinbin1987@163.com
- * QQ 277803242
- */
- public class Test4XML extends DefaultHandler implements ElementHandler {
- private String tagName = "";
- public static final String FILE_PATH = "D://saxText.xml";
- @Override
- public void characters(char[] ch, int start, int length) throws SAXException {
- System.out.println(tagName + "===SAX===>" + new String(ch, start, length));
- }
- @Override
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
- tagName = qName;
- }
- public static void removeFile() {
- System.out.println("the file have be delete is " + new File(FILE_PATH).delete());
- }
- @Override
- public void onEnd(ElementPath paramElementPath) {
- // TODO print node
- org.dom4j.Element ele=paramElementPath.getCurrent();
- System.out.println(ele.getName()+"===DOM4J====>"+ele.getText());
- ele.detach();//after read /root/user node .remove it from memory,avoid out of memory
- }
- @Override
- public void onStart(ElementPath paramElementPath) {
- }
- public void writeXMLByDOM() throws Exception {
- DocumentBuilderFactory buildFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder = buildFactory.newDocumentBuilder();
- Document doc = documentBuilder.newDocument();
- Element ele = doc.createElement("root");
- Element ele1 = doc.createElement("user");
- ele1.setTextContent("largeMeatBun");
- ele.appendChild(ele1);
- Element ele2 = doc.createElement("email");
- ele2.setTextContent("hejinbin1987@163.com");
- ele.appendChild(ele2);
- doc.appendChild(ele);
- DOMSource xmlSource = new DOMSource(doc);
- TransformerFactory transFactory = TransformerFactory.newInstance();
- Transformer transformer = transFactory.newTransformer();
- FileOutputStream outputTarget = new FileOutputStream(FILE_PATH);
- transformer.transform(xmlSource, new StreamResult(outputTarget));
- outputTarget.close();//the output steam can't auto to close
- }
- public void readerDOMParseXML() throws Exception {
- DocumentBuilderFactory buildFactory = DocumentBuilderFactory.newInstance();
- DocumentBuilder documentBuilder = buildFactory.newDocumentBuilder();
- FileInputStream file = new FileInputStream(FILE_PATH);
- Document document = documentBuilder.parse(file);
- file.close();//the xml data have load in memory
- Element node = document.getDocumentElement();
- NodeList nodelist = node.getChildNodes();
- for (int i = 0; i < nodelist.getLength(); i++)
- System.out.println(nodelist.item(i).getNodeName() + "===DOM===>" + nodelist.item(i).getTextContent());
- }
- public void writeXMLBySAX() throws Exception {
- //sax writer
- OutputStream SAXOut = new FileOutputStream(FILE_PATH);
- XMLStreamWriter xmlWrite = XMLOutputFactory.newInstance().createXMLStreamWriter(SAXOut);
- xmlWrite.writeStartDocument("utf-8", "1.0");
- xmlWrite.writeStartElement("root");
- xmlWrite.writeStartElement("user");
- xmlWrite.writeCharacters("largeMeatBun");
- xmlWrite.writeEndElement();
- xmlWrite.writeStartElement("email");
- xmlWrite.writeCharacters("hejinbin1987@163.com");
- xmlWrite.writeEndElement();
- xmlWrite.writeEndElement();
- xmlWrite.writeEndDocument();
- xmlWrite.close();
- SAXOut.close();
- }
- public void parseXMLbySAX() throws Exception {
- //sax parser
- InputStream SAXIn = new FileInputStream(FILE_PATH);
- SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
- saxParser.parse(SAXIn, this);
- }
- public org.jdom.Document readXMLByJDOM() throws Exception {
- FileInputStream JDOMInput = new FileInputStream(FILE_PATH);
- org.jdom.Document doc = new SAXBuilder().build(JDOMInput);
- org.jdom.Element eleRoot = doc.getRootElement();
- List<org.jdom.Element> eleJDOMList = eleRoot.getChildren();
- for (org.jdom.Element eleJDOM : eleJDOMList) {
- System.out.println(eleJDOM.getName() + "====JDOM===>" + eleJDOM.getText());
- }
- return doc;
- }
- public void writeXMLByJDOM(org.jdom.Document doc) throws Exception {
- FileOutputStream JDOMOut = new FileOutputStream(FILE_PATH);
- new XMLOutputter().output(doc, JDOMOut);
- JDOMOut.close();
- }
- public org.dom4j.Document readXMLByDOM4J() throws Exception {
- SAXReader saxReadernew =new SAXReader();
- saxReadernew.addHandler("/root/user", this);
- org.dom4j.Document docD4J = saxReadernew.read(FILE_PATH);
- // docD4J.accept(new Visitor(){});// also have the visitor interface
- org.dom4j.Element rootD4E = docD4J.getRootElement();
- Iterator<org.dom4j.Element> iterD4E = rootD4E.elementIterator();
- while (iterD4E.hasNext()) {
- org.dom4j.Element eleD4E = iterD4E.next();
- System.out.println(eleD4E.getName() + "===DOM4J===>" + eleD4E.getText());
- }
- return docD4J;
- }
- public void writeXMLByDOM4J(org.dom4j.Document docD4J) throws Exception {
- FileOutputStream DOM4JOut = new FileOutputStream(FILE_PATH);
- XMLWriter writer = new XMLWriter(DOM4JOut);
- writer.write(docD4J);
- DOM4JOut.close();
- }
- public static void main(String[] args) throws Exception {
- /**
- * dom you can change the implement class any one you like in jaxp.properties
- */
- //dom writer and parser
- Test4XML test4Xml = new Test4XML();
- test4Xml.writeXMLByDOM();
- test4Xml.readerDOMParseXML();
- /**
- * SAX help doc http://doc.java.sun.com/Docweb/api/all/javax.xml.stream.XMLStreamWriter
- */
- removeFile();
- test4Xml.writeXMLBySAX();
- test4Xml.parseXMLbySAX();
- /**
- * @see http://www.jdom.org/ to find api on jdom web
- */
- org.jdom.Document doc = test4Xml.readXMLByJDOM();
- removeFile();
- test4Xml.writeXMLByJDOM(doc);
- /**
- * @see http://www.dom4j.org/
- */
- org.dom4j.Document docDOM4J = test4Xml.readXMLByDOM4J();
- test4Xml.writeXMLByDOM4J(docDOM4J);
- // removeFile();
- }
- }
- //该片段来自于http://www.codesnippet.cn/detail/090520149480.html
来源: http://www.codesnippet.cn/detail/090520149480.html