关于xml的例题

1.

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class Dom4jTest {

 public static void main(String[] args) throws Exception {
  SAXReader reader = new SAXReader();
  Document doc = reader.read(new File("src/shuiguo.xml")); // 得到文档的dom模型
  Element root = doc.getRootElement(); // 获取文档的根节点
  // System.out.println(root.getName()+root.getText()+root.getNodeTypeName());

  /*
   * Element apple=((Element)(root.elements("水果").get(1))).element("苹果");
   * //用element()或elements()获取自己想要的节点 System.out.println(apple.getText());
   */

  //addTest(root, doc);
  //updateTest(root,doc);
  //deleteTest(root,doc);
  listTest(root);
 }
 public static void listTest(Element root) {
  System.out.println(root.getName());
  List<Element> list=root.elements();
  for(Element child:list){
   listTest(child);
  }
 }
 public static void deleteTest(Element root, Document doc) {
  Element grape=root.element("水果").element("葡萄");
  grape.getParent().remove(grape);
  writerFile(doc);
 }
 public static void updateTest(Element root, Document doc) {
  Element grape=root.element("水果").element("葡萄");
  grape.setText("葡萄");
  writerFile(doc);
 }
 public static void addTest(Element root, Document doc){
  List list = root.element("水果").elements(); // 找到要添加节点的位置
  Element grape = DocumentHelper.createElement("葡萄"); // 创建要添加的元素
  grape.setText("grapegrapegrape"); // 设置元素内容
  list.add(0, grape); // 将元素添加到指定位置中
  writerFile(doc);
 }
 public static void writerFile(Document doc) {
  //不设置字符集的写入方法(建议全部是英文字母的文档使用)
/* try {
  XMLWriter writer=new XMLWriter(new FileWriter("src/shuiguo.xml"));//创建xmlwriter对象
  writer.write(doc);   //利用writer对象的write(document)方法写入xml文档
  writer.close();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }*/
  //设置字符集,(有中文的文档使用)
  OutputFormat format=OutputFormat.createPrettyPrint();
  format.setEncoding("gb2312");
  try {
   XMLWriter writer=new XMLWriter(new FileWriter("src/shuiguo.xml"),format);//创建xmlwriter对象
   writer.write(doc);   //利用writer对象的write(document)方法写入xml文档
   writer.close();
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
 }
}

2.

importjavax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class SaxTest {

 /**
  * @param args
  * @throws Exception
  * @throws 
  */
 public static void main(String[] args) throws Exception {
  SAXParserFactory factory=SAXParserFactory.newInstance();  //得到解析器工厂
  SAXParser sp=factory.newSAXParser();   //得到解析器
  XMLReader reader=sp.getXMLReader();   //得到xml读取器
  reader.setContentHandler(new shuiguohandler());  //设置读取器,设置对内容进行事件处理的事件处理器
  reader.parse("src/shuiguo.xml");  //处理xml文档
 }
}
class shuiguohandler implements ContentHandler{

 @Override
 public void characters(char[] ch, int start, int length)
   throws SAXException {
  System.out.println("当前解析的内容是:"+new String(ch,start,length));
  
 }

 @Override
 public void endDocument() throws SAXException {
  System.out.println("文档解析结束");
  
 }

 @Override
 public void endElement(String uri, String localName, String qName)
   throws SAXException {
  System.out.println("结束元素是:</"+qName+">");
  
 }

 @Override
 public void endPrefixMapping(String prefix) throws SAXException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void ignorableWhitespace(char[] ch, int start, int length)
   throws SAXException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void processingInstruction(String target, String data)
   throws SAXException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void setDocumentLocator(Locator locator) {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void skippedEntity(String name) throws SAXException {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void startDocument() throws SAXException {
  System.out.println("开始解析文档:");
  
 }

 @Override
 public void startElement(String uri, String localName, String qName,
   Attributes atts) throws SAXException {
  System.out.println("开始元素是:<"+qName+">");
  
 }

 @Override
 public void startPrefixMapping(String prefix, String uri)
   throws SAXException {
  // TODO Auto-generated method stub
  
 }
 
}


3.


import java.io.File;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;

public class SAXTest1 {

 public static void main(String[] args) throws Exception, SAXException {
  SAXParserFactory factory=SAXParserFactory.newInstance();//得到解析器工厂
  SAXParser sp=factory.newSAXParser();//得到解析器
  /*XMLReader sreader=sp.getXMLReader();   //得到读取器
  sreader.setContentHandler(new shuiguohandler());   //设置ContentHandler
  sreader.parse("src/shuiguo.xml");   //设置解析文件
*/  
  sp.parse(new File("src/shuiguo.xml"), new shuiguohandler1());
 }
}
class shuiguohandler1 extends DefaultHandler{
private boolean isok;
private int count=0;
private int pos=2;
 public void characters(char[] ch, int start, int length)
   throws SAXException {
  super.characters(ch, start, length);
  if(isok&&count==pos){
  System.out.println(" characters()解析内容:"+new String(ch,start,length));}
 }

 public void endElement(String uri, String localName, String qName)
   throws SAXException {
  super.endElement(uri, localName, qName);
  if(qName.equals("梨")){
   if(count==pos){
  System.out.println("endElement()结束元素:"+qName);}
  isok=false;
  }
 }
 public void startElement(String uri, String localName, String qName,
   Attributes attributes) throws SAXException {
  super.startElement(uri, localName, qName, attributes);
  if(qName.equals("梨")){
  isok=true;
  count++;
  if(count==pos){
   System.out.println("startElement()开始元素:"+qName);
  }
  }
 }
 
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值