• XML文件操作之dom4j


    能够操作xml的api还是挺多的,DOM也是可以的,不过在此记录下dom4j的使用,感觉确实挺方便的

    所需jar包官网地址:http://www.dom4j.org/dom4j-1.6.1/

    dom4j相关的重要类和方法

    SAXReader用于读取外部的xml文件,实例

    SAXReader reader=new SAXReader();
            
    Document document=reader.read(new File("f:/test.xml"));

    SAXReader 的read方法可以读取外部的xml文件,返回一个Document 对象

    Document,dom4j的一个文档对象,用于操作xml文档的结构,可通过调用它的getRootElement()方法获取根元素Element对象

    Document document=reader.read(new File("f:/test.xml"));
                
    Element root=document.getRootElement();

    Element,元素对象,它的方法还是挺多的,是主要操作对象。方法如下:

    element("ElementName"),方法可以获取该元素标签中的名称为ElementName的子Element元素对象

    Element root=document.getRootElement();
    Element element=root.element("红楼梦");

    attribute("id") ,获取属性为id的Attribute对象

    Attribute attr=element.attribute("id");

    addElement("ElementName"),添加一个新的子Element标签,名字为ElementName

    addText(""),为element对象添加 text值

    Element e=element.addElement("朝代");
    e.addText("唐朝");

    remove(Attribute),移除一个指定的Attribute对象

    Element element=root.element("红楼梦");
    Attribute attr=element.attribute("id");
    element.remove(attr);

    addAttribute("name","value"),添加一个新的属性

    element.addAttribute("作者", "wang");

    addCDATA("")添加一段不可解析的字符

    element.addCDATA("红楼梦是中国四大名著之一");

    Attribute,属相对象,操作属性值,通过Element对象的Attribute("")方法获取

    XMLWriter,用于输出xml到指定文件

    OutputFormat format = OutputFormat.createPrettyPrint(); //格式化输出文件
    format.setEncoding("UTF-8");
    XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format);
    xmlWriter.write(document);

    实例代码

    test.xml文件如下:

    <?xml version="1.0" encoding="UTF-8"?>  
    <四大名著>  
        <西游记 id="x001">  
            <作者>吴承恩1</作者>  
            <作者>吴承恩2</作者>  
            <朝代>明朝</朝代>  
        </西游记>  
        <红楼梦 id="x002">  
            <作者>曹雪芹</作者>  
        </红楼梦>  
    </四大名著> 

    执行代码如下:

    package util;
    
    import java.io.File;
    import java.io.FileOutputStream;
    
    import org.dom4j.Attribute;
    import org.dom4j.Document;
    import org.dom4j.Element;
    import org.dom4j.io.OutputFormat;
    import org.dom4j.io.SAXReader;
    import org.dom4j.io.XMLWriter;
    
    public class XmlUtil {
    
        public static void main(String[] args) {
            parseXml();
        }
        
        public static String parseXml(){
            String xmlResult = null;
            SAXReader reader=new SAXReader();
            
            try {
                Document document=reader.read(new File("f:/test.xml"));
                
                Element root=document.getRootElement();
                Element element=root.element("红楼梦");
                Attribute attr=element.attribute("id");
                element.remove(attr);
                element.addAttribute("作者", "wang");
                Element e=element.addElement("朝代");
                e.addText("清朝");
                element.addCDATA("红楼梦是中国四大名著之一");
                
                OutputFormat format = OutputFormat.createPrettyPrint();  
                format.setEncoding("UTF-8");  
                XMLWriter xmlWriter=new XMLWriter(new FileOutputStream(new File("f:/test2.xml")),format);
                xmlWriter.write(document);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return xmlResult;
        }
    }

    执行后,生成了test2.xml文件,内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <四大名著> 
      <西游记 id="x001"> 
        <作者>吴承恩1</作者>  
        <作者>吴承恩2</作者>  
        <朝代>明朝</朝代> 
      </西游记>  
      <红楼梦 作者="wang"> 
        <作者>曹雪芹</作者>  
        <朝代>清朝</朝代><![CDATA[红楼梦是中国四大名住著之一]]>
      </红楼梦> 
    </四大名著>

     

  • 相关阅读:
    一款单机游戏应该有的一些要素
    终于成功注册了Amazon.com的Affiliate
    创办公司的步骤不完全讲解(二)
    继续新环境没有asp.net mvc3项目模板的问题
    在自己的博客上打个广告,Kinect for Windows要的来
    数据仓库走向灭亡??
    Oracle & Endeca
    无题
    无题
    【译著】第7章 SportsStore:一个真实的应用程序 — 《精通ASP.NET MVC 3框架》
  • 原文地址:https://www.cnblogs.com/yxjdragon/p/5823187.html
Copyright © 2020-2023  润新知