锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
DOM4J鐢⊿AXReader
褰㈡垚doc 鐒跺悗
杈撳嚭鐨勬柟寮忎篃涓嶅お涓鏍?br />jdom鐢╔MLOutput
鐢熸垚鏍煎紡
鐒跺悗鍙坸op.setput(doc,os)
鎶婅緭鍏ユ祦鍜宒oc褰撲綔鍙傛暟
鑰?br />dom4j鍒欐槸
鍒涘緩涓涓?XMLWriter(os,format)
format鏄牸寮?br />鐒跺悗鐢變功鍐欏櫒涔﹀啓(doc)
writer.writer(doc)
渚嬪錛歞om4j鐨刢ode 涓猴細(xì)
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
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 parsedom4j {
聽/**
聽 * @param args
聽 */
聽public static void main(String[] args) {
聽聽// TODO 鑷姩鐢熸垚鏂規(guī)硶瀛樻牴
聽聽parsedom4j j=new parsedom4j();
聽聽j.delete();
聽聽
聽}
聽public void update(){
聽聽 SAXReader parser=new SAXReader();
聽聽 String path="D:/Example10.xml";
聽聽 File file=new File(path);
聽聽聽聽聽聽聽聽 try {
聽聽聽 Document doc=parser.read(path);
聽聽聽Element root=doc.getRootElement();
聽聽聽I(yíng)terator iter=root.elementIterator();
聽聽聽while(iter.hasNext()){
聽聽聽聽Element child=(Element)iter.next();
聽聽聽聽I(yíng)terator childchilds=child.elementIterator();
聽聽聽聽boolean isCorrect=false;
聽聽聽聽while(childchilds.hasNext()){
聽聽聽聽聽Element childchild=(Element)childchilds.next();
聽聽聽聽聽if(childchild.getName().equalsIgnoreCase("title")&&childchild.getTextTrim().equalsIgnoreCase("b")){
聽聽聽聽聽聽 isCorrect=true;
聽聽聽聽聽}if(childchild.getName().equalsIgnoreCase("email")&&isCorrect)
聽聽聽聽聽{
聽聽聽聽聽聽聽 childchild.setText("瑗垮畨@163.com");聽
聽聽聽聽聽聽}
聽聽聽聽}
聽聽聽}
聽聽聽OutputFormat format=new OutputFormat();
聽聽聽format.setEncoding("gb3212");
聽聽聽format.setNewlines(true);
聽聽聽聽聽聽聽聽 OutputStream os=new FileOutputStream(path);
聽聽聽XMLWriter writer=new XMLWriter(os,format);
聽聽聽writer.write(doc);
聽聽聽os.close();
聽聽聽writer.close();
聽聽聽
聽聽聽
聽聽} catch (MalformedURLException e) {
聽聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽聽e.printStackTrace();
聽聽} catch (Exception e) {
聽聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽聽e.printStackTrace();
聽聽}
聽}
聽
聽public void delete(){
聽聽Element de=null;
聽 SAXReader reader=new SAXReader();
聽 String path="D:/Example10.xml";
聽 Document doc;
聽try {
聽聽doc = reader.read(path);
聽聽Element root=doc.getRootElement();
聽聽List children=root.elements();
聽聽for(int i=0;i<children.size();i++){
聽聽聽Element child=(Element)children.get(i);
聽聽聽List childchilds=child.elements();
聽聽聽for(int j=0;i<childchilds.size();j++){
聽聽聽Element聽e=(Element)childchilds.get(i);
聽聽聽if(e.getName().equalsIgnoreCase("email")){
聽聽聽聽de=e;
聽聽聽聽childchilds.remove(j);
聽聽聽}
聽聽聽}
聽聽}
聽} catch (DocumentException e) {
聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽e.printStackTrace();
聽}
聽聽聽聽
聽
聽聽聽
聽聽聽聽 聽
聽聽聽聽
聽聽
聽}
聽聽聽
聽聽聽
聽聽聽
聽
聽public parsedom4j() {
聽聽super();
聽聽// TODO 鑷姩鐢熸垚鏋勯犲嚱鏁板瓨鏍?br />聽}
}
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class CreateJdomXml {
聽String root="messages";
聽聽聽 String child="message";
聽String[][] childitem={{"title","a"},{"content","aaa"},{"email","aaaaa"}};
聽/**
聽 * @param args
聽 */
聽public CreateJdomXml(){
聽聽
聽}
聽public static void main(String[] args) {
聽聽// TODO 鑷姩鐢熸垚鏂規(guī)硶瀛樻牴
聽聽CreateJdomXml cj=new CreateJdomXml();
聽聽cj.deletexml();
聽聽
聽}
聽聽聽
聽public void createxml(){
聽聽Element roote=new Element(root);
聽聽Element childe=new Element(child);
聽聽childe.addAttribute("id", "A");
聽聽for(int i=0;i<childitem.length;i++){
聽聽聽Element childchild=new Element(childitem[i][0]);
聽聽聽childchild.setText(childitem[i][1]);
聽聽聽childe.addContent(childchild);
聽聽}
聽聽roote.addContent(childe);
聽聽Document doc=new Document(roote);
聽聽String newfile="D:/NewCearteExample.xml";
聽聽File file=new File(newfile);
聽聽if(!file.exists()){
聽聽聽try {
聽聽聽聽file.createNewFile();
聽聽聽} catch (IOException e) {
聽聽聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽聽聽e.printStackTrace();
聽聽聽}
聽聽}
聽聽OutputStream os=null;
聽聽try {
聽聽聽os=new FileOutputStream(file);
聽聽} catch (FileNotFoundException e) {
聽聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽聽e.printStackTrace();
聽聽}
聽聽XMLOutputter xop=new XMLOutputter();
聽聽xop.setEncoding("gb2312");
聽聽xop.setIndentSize(3);
聽聽xop.setNewlines(true);
聽聽xop.setSuppressDeclaration(false);
聽聽try {
聽聽聽xop.output(doc, os);
聽聽聽os.close();
聽聽聽聽聽
聽聽} catch (IOException e) {
聽聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽聽e.printStackTrace();
聽聽}
聽聽
聽聽
聽}
聽
聽public void updatexml(){
聽聽I(yíng)nputStream is=null;
聽聽OutputStream os=null;
聽String path="D:/NewCearteExample.xml";
聽File file=new File(path);
聽try {
聽聽is=new FileInputStream(file);
聽聽SAXBuilder builder=new SAXBuilder();
聽聽Document doc=builder.build(is);
聽聽Element root=doc.getRootElement();
聽聽List childrenlist=root.getChildren();
聽聽Element child=(Element)childrenlist.get(0);
聽聽Element childchild=new Element("desc");
聽聽childchild.setText("person");
聽聽child.addContent(childchild);
聽聽聽聽聽聽聽
聽聽os=new FileOutputStream(file);
聽聽XMLOutputter xop=new XMLOutputter();
聽聽xop.setNewlines(true);
聽聽xop.setIndentSize(3);
聽聽xop.setEncoding("gb2312");聽
聽聽xop.output(doc,os);
聽聽os.close();
聽聽is.close();
聽聽
聽聽
聽} catch (Exception e) {
聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽e.printStackTrace();
聽}
聽聽
聽
聽}
聽聽 public void deletexml(){
聽聽聽 InputStream is=null;
聽聽OutputStream os=null;
聽String path="D:/NewCearteExample.xml";
聽File file=new File(path);聽
聽try{
聽is=new FileInputStream(file);
聽SAXBuilder builder=new SAXBuilder();
聽Document doc=builder.build(is);
聽Element root=doc.getRootElement();
聽List childlist=root.getChildren();
聽Element child=(Element)childlist.get(0);
聽List childrenlist=child.getChildren();
聽for(int i=0;i<childrenlist.size();i++){
聽聽Element childchild=(Element)childrenlist.get(i);
聽聽if(childchild.getName().equalsIgnoreCase("desc")){
聽聽聽childrenlist.remove(i);
聽聽}
聽}
聽os=new FileOutputStream(file);
聽XMLOutputter xop=new XMLOutputter();
聽xop.setNewlines(true);
聽xop.setIndentSize(3);
聽xop.setEncoding("gb2312");聽
聽xop.output(doc,os);
聽os.close();
聽is.close();
聽
聽}catch(Exception e)
聽{e.printStackTrace();
聽}
聽聽 }
聽
}
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
import org.xml.sax.helpers.XMLReaderFactory;
public class ParserOne extends DefaultHandler {
聽Triangle tri;
聽Square聽聽 squ;
聽Circle聽聽 cir;
聽List trislist=new ArrayList();
聽List squslist=new ArrayList();
聽List cirslist=new ArrayList();
聽StringBuffer sb=new StringBuffer();
聽boolean triangle=false;
聽boolean square=false;
聽boolean circle=false;
聽@Override
聽public void startDocument() throws SAXException {
聽聽// TODO 鑷姩鐢熸垚鏂規(guī)硶瀛樻牴
聽
聽}
聽
聽@Override
聽public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
聽聽// TODO 鑷姩鐢熸垚鏂規(guī)硶瀛樻牴
聽if(qName.equals("Triangle")){
聽聽tri=new Triangle();
聽聽tri.name=attributes.getValue(0);
聽聽trislist.add(tri);
聽聽triangle=true;
聽}else if(qName.equals("Square")){
聽聽squ=new Square();
聽聽squ.name=attributes.getValue(0);
聽聽squslist.add(squ);
聽聽square=true;
聽}else if(qName.equals("Circle")){
聽聽cir=new Circle();
聽聽cir.name=attributes.getValue(0);
聽聽聽聽 cirslist.add(cir);
聽聽聽聽 circle=true;
聽}聽聽聽 sb.delete(0, sb.length());
聽}
聽
聽
聽@Override
聽public void characters(char[] ch, int start, int length) throws SAXException {
聽聽// TODO 鑷姩鐢熸垚鏂規(guī)硶瀛樻牴
聽聽sb.append(ch,start,length);
聽}
聽@Override
聽public void endElement(String uri, String localName, String qName) throws SAXException {
聽聽// TODO 鑷姩鐢熸垚鏂規(guī)硶瀛樻牴
聽if(triangle){
聽聽if(qName.equals("x")){
聽聽聽聽 tri.x=Integer.parseInt(sb.toString().trim());
聽聽}else if(qName.equals("y")){
聽聽聽聽 tri.y=Integer.parseInt(sb.toString().trim());
聽聽}else if(qName.equals("height")){
聽聽聽聽 tri.height=Integer.parseInt(sb.toString().trim());
聽聽}else if(qName.equals("width")){
聽聽聽聽聽聽聽 tri.width=Integer.parseInt(sb.toString().trim());
聽聽}
聽}else if(square){
聽聽if(qName.equals("x")){
聽聽聽聽聽聽 squ.x=Integer.parseInt(sb.toString().trim());
聽聽聽}else if(qName.equals("y")){
聽聽聽聽squ.y=Integer.parseInt(sb.toString().trim());
聽聽聽}else if(qName.equals("height")){
聽聽聽聽squ.height=Integer.parseInt(sb.toString().trim());
聽聽聽}else if(qName.equals("width")){
聽聽聽聽squ.width=Integer.parseInt(sb.toString().trim());
聽聽聽}聽
聽}else if(circle){
聽聽if(qName.equals("x")){
聽聽聽聽聽 cir.x=Integer.parseInt(sb.toString().trim());
聽聽}else if(qName.equals("y")){
聽聽聽cir.y=Integer.parseInt(sb.toString().trim());
聽聽}else if(qName.equals("height")){
聽聽聽cir.height=Integer.parseInt(sb.toString().trim());
聽聽}else if(qName.equals("width")){
聽聽聽cir.width=Integer.parseInt(sb.toString().trim());
聽聽}聽
聽}
聽if(qName.equals("Triangle")){
聽聽聽 triangle=false;
聽聽聽 }
聽聽聽 if(qName.equals("Square")){
聽聽聽 square=false;聽
聽聽聽 }
聽聽聽 if(qName.equals("Circle")){
聽聽聽 circle=false;
聽聽聽 }
聽}
聽聽聽 @Override
聽public void endDocument() throws SAXException {
聽聽// TODO 鑷姩鐢熸垚鏂規(guī)硶瀛樻牴
聽
聽}
聽聽聽 public static void main(String[] args){
聽聽聽 聽ParserOne par=new ParserOne();
聽聽聽 聽try {
//閫氳繃XML闃呰宸ュ巶寤虹珛闃呰鍣?瑙f瀽鍣? 榪欓噷渚濇墭xerces.jar 鍜岄噷闈㈢殑SAXparser 璺緞聽 (浣跨敤SAX 聽API瑙f瀽鍣?
聽聽聽XMLReader parser=XMLReaderFactory.createXMLReader("org.apache.xerces.parsers.SAXParser");
//鏈夎В鏋愬櫒寤虹珛鎷︽埅鍣?鏈緥涓妸鏈被璁劇疆鎴愪負(fù)鎷︽埅鍣紝涔熷彲浠ヨ緗埆鐨勭被)
聽聽聽parser.setContentHandler(par);
//瑙f瀽鍣ㄨВ鏋?璺緞)
聽聽聽parser.parse("D:/Example.xml");
聽聽} catch (Exception e) {
聽聽聽// TODO 鑷姩鐢熸垚 catch 鍧?br />聽聽聽e.printStackTrace();
聽聽}
聽聽for(int i=0;i<par.trislist.size();i++){
聽聽聽Triangle tr=(Triangle)par.trislist.get(i);
聽聽聽tr.print(System.out);
聽聽}
聽聽for(int i=0;i<par.squslist.size();i++){
聽聽聽Square sq=(Square)par.squslist.get(i);
聽聽聽sq.print(System.out);
聽聽}
聽聽for(int i=0;i<par.cirslist.size();i++){
聽聽聽Circle ci=(Circle)par.cirslist.get(i);
聽聽聽ci.print(System.out);
聽聽}
聽聽
聽聽聽 }
}
瑙f瀽 緇撴灉濡備笅錛?br />name:tri1
x:3
y:0
height:3
width:5
name:tri2
x:5
y:0
height:3
width:5
name:sq1
x:0
y:0
height:3
width:3
name:circ1
x:10
y:10
height:3
width:3