Dom4j创建和解析XML

jopen 10年前

需要导入Dom4j的一个Jar文件:

Dom4j创建XML

import java.io.FileOutputStream;  import java.io.FileWriter;    import org.dom4j.Document;  import org.dom4j.DocumentHelper;  import org.dom4j.Element;  import org.dom4j.io.OutputFormat;  import org.dom4j.io.XMLWriter;    public class Test1  {   public static void main(String[] args) throws Exception   {    // 创建文档并设置文档的根元素节点 :第一种方式    // Document document = DocumentHelper.createDocument();    //    // Element root = DocumentHelper.createElement("student");    //    // document.setRootElement(root);      // 创建文档并设置文档的根元素节点 :第二种方式    Element root = DocumentHelper.createElement("student");    Document document = DocumentHelper.createDocument(root);          //给根元素添加属性    root.addAttribute("name", "zhangsan");          //给根元素添加子元素    Element helloElement = root.addElement("hello");    Element worldElement = root.addElement("world");          //设置元素的文本内容    helloElement.setText("hello");    worldElement.setText("world");          //给hello元素添加属性    helloElement.addAttribute("age", "20");          //将XML文档输出到命令行    XMLWriter xmlWriter = new XMLWriter();    xmlWriter.write(document);    //指定输出格式,第一个参数表示缩进,第二个参数表示是否换行    OutputFormat format = new OutputFormat("    ", true);    //以字节流的方式输出到文件    XMLWriter xmlWriter2 = new XMLWriter(new FileOutputStream("student2.xml"), format);    xmlWriter2.write(document);    //以字符流的方式输出到文件    XMLWriter xmlWriter3 = new XMLWriter(new FileWriter("student3.xml"), format);    xmlWriter3.write(document);    //xmlWriter3.flush();//当你使用字符流输出的时候,需要有这个刷新的方法,否则没有结果输出    xmlWriter3.close();//close方法中包含xmlWriter3的flush方法,所以这个方法也可以     }  }

 

Dom4j解析XML

 import java.io.File;  import java.util.Iterator;  import java.util.List;    import javax.xml.parsers.DocumentBuilder;  import javax.xml.parsers.DocumentBuilderFactory;    import org.dom4j.Document;  import org.dom4j.Element;  import org.dom4j.io.DOMReader;  import org.dom4j.io.SAXReader;    public class Test2  {   public static void main(String[] args) throws Exception   {    //Dom4j解析XMl方式一:使用SAXReader解析XML    SAXReader saxReader = new SAXReader();    //读取文档    Document doc = saxReader.read(new File("student2.xml"));    //得到根元素    Element root = doc.getRootElement();        System.out.println("root element: " + root.getName());    //得到根元素下的所有子元素    List childList = root.elements();        System.out.println(childList.size());    //得到根元素下的所有名字为hello子元素    List childList2 = root.elements("hello");        System.out.println(childList2.size());    //得到根元素下的第一个名字为hello的子元素    Element first = root.element("hello");    //得到hello元素下的属性为age的值    System.out.println(first.attributeValue("age"));    //遍历根元素下的子元素的第二种方法,第一种是使用List    for(Iterator iter = root.elementIterator(); iter.hasNext();)    {     Element e = (Element)iter.next();     //获得子元素属性为age的值,没有age属性,输出null     System.out.println(e.attributeValue("age"));    }        System.out.println("---------------------------");        //Dom4j解析XMl方式二:使用DOMReader解析XML    DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();    DocumentBuilder db = dbf.newDocumentBuilder();    //在一个项目中使用了名字相同的一个类,使用包名区分    org.w3c.dom.Document document = db.parse(new File("student2.xml"));        DOMReader domReader = new DOMReader();        //将JAXP的Document转换为dom4j的Document    Document d = domReader.read(document);        Element rootElement = d.getRootElement();        System.out.println(rootElement.getName());     }  }