打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
读取解析xml文件

下面说下主要的实用方法

          1:  读取并解析XML文档:

               读写XML文档主要依赖于org.dom4j.io包,提供了DOMReader和SAXReader两类不同方式,调用方式一样。

           // 从文件读取XML,输入文件名,返回XML文档

    public Document read(String fileName) throws MalformedURLException, DocumentException {
      
               SAXReader reader = new SAXReader();
 
             Document document = reader.read(new File(fileName));
 
             return document;
        }
   2:取得ROOT节点
         如果要读取一个XML文件,最重要的就是要读取ROOT节点了,一切分析XML都是从ROOT节点开始。
     
    public Element getRootElement(Document doc){
             return doc.getRootElement();
     }
 
   3:遍历XML树,这里有二种方法
      (1): 枚举
           // 枚举所有子节点
    for ( Iterator i = root.elementIterator(); i.hasNext(); ) {
       Element element = (Element) i.next();
       // do something
    }
    // 枚举名称为foo的节点
    for ( Iterator i = root.elementIterator(foo); i.hasNext();) {
       Element foo = (Element) i.next();
       // do something
    }
    // 枚举属性
    for ( Iterator i = root.attributeIterator(); i.hasNext(); ) {
       Attribute attribute = (Attribute) i.next();
       // do something
    }
 
  (2) :  递归
     public void treeWalk() {
       treeWalk(getRootElement());
    }
    public void treeWalk(Element element) {
       for (int i = 0, size = element.nodeCount(); i < size; i++)     {
           Node node = element.node(i);
           if (node instanceof Element) {
              treeWalk((Element) node);
           } else { // do something....
           }
       }
}
 
  4:字符串与XML的转换
   // XML转字符串
  Document document = ...;
    String text = document.asXML();
  // 字符串转XML
    String text = James ;
    Document document = DocumentHelper.parseText(text);
 
  5. 创建XML
     这里创建一个XML,没有写
    public Document createDocument() {
       Document document = DocumentHelper.createDocument();
       Element root = document.addElement(root);
       Element author1 =
           root
              .addElement(author)
              .addAttribute(name, James)
              .addAttribute(location, UK)
              .addText(James Strachan);
       Element author2 =
           root
              .addElement(author)
              .addAttribute(name, Bob)
              .addAttribute(location, US)
              .addText(Bob McWhirter);
       return document;
    }
   6: XML 文件输出
   FileWriter out = new FileWriter( foo.xml );
    document.write(out);
  
 
    DOM4j 的简单常用的方法上面总结了下,大家可以有一个印象,想要学的仔细了就要自己好好研究了,下面有一个以前写的小程序,实现了创建和编辑XML文件的功能。
 
    package com.dom4j.test;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import org.dom4j.Attribute;
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 NewXML {
 
 
 public boolean newXMl(String fileName){
  
  boolean returnValue=false;
  
  //定义一个XML文档
  
  Document docement=DocumentHelper.createDocument();
  
  //设置XML文档的元素
  Element rootElement=docement.addElement("DOM4J创建XML文档");
  
  rootElement.addComment("镜花水月2007-4-24晚上创建");
  
  Element nameElement=rootElement.addElement("镜花水月");
  
  nameElement.addAttribute("名字","不告诉你");
  
  Element schoolElement=nameElement.addElement("学校");
  
  schoolElement.setText("西安翻译学院");
  
  Element cityElement=rootElement.addElement("城市");
  
  cityElement.setText("上海");
  
  Element homeElement=cityElement.addElement("住址");
  
  homeElement.setText("徐家汇");
  
  //创建XML文档
  try {
   
           
   
   OutputFormat format = OutputFormat.createPrettyPrint();
   
   
   
   format.setEncoding("GBK");
   
   XMLWriter writer=new XMLWriter(new FileWriter(new File(fileName)),format); 
           
          writer.write(docement);
          
   writer.close();
   
   return returnValue=true;   
   
   
  } catch (IOException e) {
   
   e.printStackTrace();
  }
  
  
  
  return returnValue;
  
 }
 
 
 
 public boolean update(String fileName,String newFileName){
  
  boolean returnValaue=false;
  
  
  
  SAXReader reader=new SAXReader();
  
  try {
   Document docement=reader.read(new File(fileName));
   
   List list=null;
   
   list=docement.selectNodes("/DOM4J创建XML文档/镜花水月/@名字");
   
   Iterator it=list.iterator();
   
   while(it.hasNext()){
    Attribute attribute=(Attribute) it.next();
    if(attribute.getValue().equals("不告诉你")){
     attribute.setValue("还是不告诉你");
    }
   }
   
   //将就该写入新的文件
   
   try {
    //转码
    OutputFormat format=OutputFormat.createPrettyPrint();
    
    format.setEncoding("GBK");
    
    XMLWriter writer=new XMLWriter(new FileWriter(new File(newFileName)),format);
    
    writer.write(docement);
    
    writer.close();
    
    return returnValaue=true;
    
   } catch (IOException e) {
    
    e.printStackTrace();
   }
   
   
  } catch (DocumentException e) {
   
   e.printStackTrace();
  }
  
  return returnValaue;
 }
 public static void main(String[] args) {
  
  NewXML newXml=new NewXML();
  
  String name="newXML.xml";
  
  String newName="UpdateXML.xml";
  
  if(!newXml.newXMl(name)){
   System.out.println("创建出现错误!");
   return ;
  }else{
   System.out.println("创建XML成功!");
  }
  
  if(!newXml.update(name,newName)){
   System.out.println("修改出现错误!");
   return;
  }else{
   System.out.println("修改XML成功");
  }
  
 }
}

 

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
dom4j的一般应用 - bicashy - JavaEye技术网站
DOM4J解析XML文档、Document对象、节点对象节点对象属性、将文档写入XML文件
Dom4J解析xml文档
Dom4j的使用(全而好的文章) - xhy0422 - JavaEye技术网站
使用 domj4 API 创建与修改 XML 文档
dom4j读取某个元素的某个属性
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服