源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

在java中使用dom4j解析xml(示例代码)

  • 时间:2022-06-21 19:59 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:在java中使用dom4j解析xml(示例代码)
虽然Java中已经有了Dom和Sax这两种标准解析方式 但其操作起来并不轻松,对于我这么一个初学者来说,其中部分代码是活生生的恶心 为此,伟大的第三方开发组开发出了Jdom和Dom4j等工具 鉴于目前的趋势,我们这里来讲讲Dom4j的基本用法,不涉及递归等复杂操作 Dom4j的用法很多,官网上的示例有那么点儿晦涩,这里就不写了 首先我们需要出创建一个xml文档,然后才能对其解析 [b]xml文档: [/b]
[u]复制代码[/u] 代码如下:
<?xml version="1.0" encoding="UTF-8"?> <books>    <book id="001">       <title>Harry Potter</title>       <author>J K. Rowling</author>    </book>    <book id="002">       <title>Learning XML</title>       <author>Erik T. Ray</author>    </book> </books>
[b]示例一:用List列表的方式来解析xml [/b]
[u]复制代码[/u] 代码如下:
import java.io.File; import java.util.List; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Demo {  public static void main(String[] args) throws Exception {   SAXReader reader = new SAXReader();   File file = new File("books.xml");   Document document = reader.read(file);   Element root = document.getRootElement();   List<Element> childElements = root.elements();   for (Element child : childElements) {    //未知属性名情况下    /*List<Attribute> attributeList = child.attributes();    for (Attribute attr : attributeList) {     System.out.println(attr.getName() + ": " + attr.getValue());    }*/    //已知属性名情况下    System.out.println("id: " + child.attributeValue("id"));    //未知子元素名情况下    /*List<Element> elementList = child.elements();    for (Element ele : elementList) {     System.out.println(ele.getName() + ": " + ele.getText());    }    System.out.println();*/    //已知子元素名的情况下    System.out.println("title" + child.elementText("title"));    System.out.println("author" + child.elementText("author"));    //这行是为了格式化美观而存在    System.out.println();   }  } }
[b]示例二:使用Iterator迭代器的方式来解析xml [/b]
[u]复制代码[/u] 代码如下:
import java.io.File; import java.util.Iterator; import org.dom4j.Attribute; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Demo {  public static void main(String[] args) throws Exception {   SAXReader reader = new SAXReader();   Document document = reader.read(new File("books.xml"));   Element root = document.getRootElement();   Iterator it = root.elementIterator();   while (it.hasNext()) {    Element element = (Element) it.next();    //未知属性名称情况下    /*Iterator attrIt = element.attributeIterator();    while (attrIt.hasNext()) {     Attribute a  = (Attribute) attrIt.next();     System.out.println(a.getValue());    }*/    //已知属性名称情况下    System.out.println("id: " + element.attributeValue("id"));    //未知元素名情况下    /*Iterator eleIt = element.elementIterator();    while (eleIt.hasNext()) {     Element e = (Element) eleIt.next();     System.out.println(e.getName() + ": " + e.getText());    }    System.out.println();*/    //已知元素名情况下    System.out.println("title: " + element.elementText("title"));    System.out.println("author: " + element.elementText("author"));    System.out.println();   }  } }
运行结果: [b][img]http://files.jb51.net/file_images/article/201310/201310230947052.png[/img] [/b] [b]示例三:创建xml文档并输出到文件 [/b]
[u]复制代码[/u] 代码如下:
import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.OutputFormat; import org.dom4j.io.XMLWriter; public class Demo {  public static void main(String[] args) throws Exception {   Document doc = DocumentHelper.createDocument();   //增加根节点   Element books = doc.addElement("books");   //增加子元素   Element book1 = books.addElement("book");   Element title1 = book1.addElement("title");   Element author1 = book1.addElement("author");   Element book2 = books.addElement("book");   Element title2 = book2.addElement("title");   Element author2 = book2.addElement("author");   //为子节点添加属性   book1.addAttribute("id", "001");   //为元素添加内容   title1.setText("Harry Potter");   author1.setText("J K. Rowling");   book2.addAttribute("id", "002");   title2.setText("Learning XML");   author2.setText("Erik T. Ray");   //实例化输出格式对象   OutputFormat format = OutputFormat.createPrettyPrint();   //设置输出编码   format.setEncoding("UTF-8");   //创建需要写入的File对象   File file = new File("D:" + File.separator + "books.xml");   //生成XMLWriter对象,构造函数中的参数为需要输出的文件流和格式   XMLWriter writer = new XMLWriter(new FileOutputStream(file), format);   //开始写入,write方法中包含上面创建的Document对象   writer.write(doc);  } }
运行结果: [b][img]http://files.jb51.net/file_images/article/201310/201310230947053.png[/img] [/b]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部