DOM4J解析XML文档

DOM4j中,获得Document对象的方式有三种:

  1. 读取XML文件,获得document对象

    SAXReader reader = new SAXReader();
    Document document = reader.read(new File(“input.xml”));

  2. 解析XML形式的文本,得到document对象.

    String text = ““;
    Document document = DocumentHelper.parseText(text);

  3. 主动创建document对象.

    Document document = DocumentHelper.createDocument();
    //创建根节点
    Element root = document.addElement(“members”);

节点对象:

  1. 获取文档的根节点.
    Element root = document.getRootElement();
  2. 取得某个节点的子节点.
    Element element=node.element(“书名”);
  3. 取得节点的文字
    String text=node.getText();
  4. 取得某节点下所有名为“member”的子节点,并进行遍历.
    List nodes = rootElm.elements(“member”);
    for (Iterator it = nodes.iterator(); it.hasNext();) {
    Element elm = (Element) it.next();
    // do something
    }

  5. 对某节点下的所有子节点进行遍历.
    for(Iterator it=root.elementIterator();it.hasNext();){
    Element element = (Element) it.next();
    // do something
    }

  6. 在某节点下添加子节点.
    Element ageElm = newMemberElm.addElement(“age”);

  7. 设置节点文字.
    element.setText(“29”);

  8. 删除某节点.
    //childElm是待删除的节点,parentElm是其父节点
    parentElm.remove(childElm);

  9. 添加一个CDATA节点.
    Element contentElm = infoElm.addElement(“content”);
    contentElm.addCDATA(diary.getContent());

节点对象属性 

  1. 取得某节点下的某属性
    Element root=document.getRootElement();
    //属性名name
    Attribute attribute=root.attribute(“size”);
  2. 取得属性的文字
    String text=attribute.getText();
  3. 删除某属性
    Attribute attribute=root.attribute(“size”);
    root.remove(attribute);
  4. 遍历某节点的所有属性
    Element root=document.getRootElement();
    for(Iterator it=root.attributeIterator();it.hasNext();){
    Attribute attribute = (Attribute) it.next();
    String text=attribute.getText();
    System.out.println(text);
    }

  5. 设置某节点的属性和文字.
    newMemberElm.addAttribute(“name”, “sitinspring”);

  6. 设置属性的文字
    Attribute attribute=root.attribute(“name”);
    attribute.setText(“sitinspring”);

将文档写入XML文件

  1. 文档中全为英文,不设置编码,直接写入的形式.
  XMLWriter writer = new XMLWriter(new  FileWriter("output.xml"));
  writer.write(document);
  writer.close();
  1. 文档中含有中文,设置编码格式写入的形式.
OutputFormat format = OutputFormat.createPrettyPrint();
// 指定XML编码                   
     format.setEncoding("GBK");       
XMLWriter writer = new XMLWriter(newFileWriter("output.xml"),format);
writer.write(document);
writer.close();

Dom4j在指定位置插入节点

  1. 得到插入位置的节点列表(list)
  2. 调用list.add(index,elemnent),由index决定element的插入位置。
    Element元素可以通过DocumentHelper对象得到。示例代码:
Element aaa = DocumentHelper.createElement("aaa");
aaa.setText("aaa");

List list = root.element("书").elements();
list.add(1, aaa);

//更新document

字符串与XML的转换

  1. 将字符串转化为XML
String text = "<members> <member>sitinspring</member></members>";
Document document = DocumentHelper.parseText(text);
  1. 将文档或节点的XML转化为字符串.
 SAXReader reader = new SAXReader();
 Document   document = reader.read(new File("input.xml"));            
 Element root=document.getRootElement();    

 String docXmlText=document.asXML();

 String rootXmlText=root.asXML();
 Element memberElm=root.element("member");
 String memberXmlText=memberElm.asXML();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值