zoukankan      html  css  js  c++  java
  • XML解析技术:Dom4j浅析

    DOM4J解析技术

    一. Document对象相关

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

    eg -> 
    SAXReader reader = new SAXReader(); 
    Document document 
    = reader.read(new File(emp.xml")); 

      


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

    eg ->
    String text = "元素"
    Document document 
    = DocumentHelper.parseText(text);

      

    (3) 主动创建document对象

    eg ->
    Document document = DocumentHelper.createDocument(); 
    Element root 
    = document.addElement("members");// 创建根节点 

      

    二. 节点相关

    (1) 获取文档的根节点.

    eg ->
    SAXReader reader = new SAXReader(); 
    Document document 
    = reader.read(new File(emp.xml")); 

      

    (2) 取得某节点的单个子节点

    eg ->
    Element memberElm=root.element("member");// "member"是节点名 

      

    (3) 取得节点的文字

    eg ->
    DString text=memberElm.getText(); 
    或者: 
    eg ->
    String text=root.elementText("name");//这个是取得根节点下的name字节点的文字 

      

    (4) 取得某节点下名为"member"的所有字节点并进行遍历

    eg ->
    List nodes = rootElm.elements("member"); 
        
    for (Iterator it = nodes.iterator(); it.hasNext();) {
            Element elm 
    = (Element) it.next(); // do something 
        } 

      

    (5)对某节点下的所有子节点进行遍历

    eg ->
    for(Iterator it=root.elementIterator();it.hasNext();){ 
        Element element 
    = (Element) it.next(); // do something 

      

    (6) 在某节点下添加子节点

    eg ->
    Element ageElm = newMemberElm.addElement("age"); 

      

    (7)设置节点文字.

    eg ->
    ageElm.setText("29"); 

      

    (8) 删除某节点

    eg ->
    parentElm.remove(childElm);// childElm是待删除的节点,parentElm是其父节点 

      

    (9)添加一个CDATA节点

    eg ->
    Element contentElm = infoElm.addElement("content"); 
    contentElm.addCDATA(diary.getContent()); 
    contentElm.getText(); 
    // 特别说明:获取节点的CDATA值与获取节点的值是一个方法 
    contentElm.clearContent(); //清除节点中的内容,CDATA亦可 

      

    三 . 属性相关

    (1)取得某节点下的某属性

    eg ->
    Element root=document.getRootElement(); 
    Attribute attribute
    =root.attribute("size");// 属性名name 

      

    (2)取得属性的文字

    eg ->
    String text=attribute.getText();

      

    或者: eg ->
    String text2=root.element("name").attributeValue("firstname"); //这个是取得根节点下name字节点的属性firstname的值. 

      

    (3)遍历某节点的所有属性

    eg ->
    Element root=document.getRootElement(); 
    for(Iterator it=root.attributeIterator();it.hasNext();){ 
        Attribute attribute 
    = (Attribute) it.next(); 
        String text
    =attribute.getText(); 
        System.out.println(text); 

      

    (4)设置某节点的属性和文字

    eg ->
    newMemberElm.addAttribute("name""sitinspring"); 

      

    (5) 设置属性的文字

    eg ->
    Attribute attribute=root.attribute("name"); 
    attribute.setText(
    "sitinspring"); 

      

    (6)删除某属性

    eg ->
    Attribute attribute=root.attribute("size");// 属性名name 
    root.remove(attribute); 

      

    四 . 将文档写入XML文件

    (1)文档中全为英文,不设置编码,直接写入的形式

    eg ->
    XMLWriter writer = new XMLWriter(new FileWriter("output.xml")); 
    writer.write(document); 
    writer.close(); 

      

    (2)文档中含有中文,设置编码格式写入的形式

    eg ->
    OutputFormat format = OutputFormat.createPrettyPrint(); 
    format.setEncoding(
    "GBK"); // 指定XML编码 
    XMLWriter writer = new XMLWriter(new FileWriter("output.xml"),format); 
    writer.write(document); 
    writer.close(); 

      

    五 . 字符串与XML的转换

    (1)将字符串转化为XML

    eg ->
    String text = " sitinspring "
    Document document 
    = DocumentHelper.parseText(text); 

      

    (2)将文档或节点的XML转化为字符串

    eg ->
    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(); 

      


  • 相关阅读:
    typescript泛型
    安卓手机IPhone抓包Https
    js里面for循环的++i与i++
    http请求头
    从浏览器地址栏输入url到页面呈现
    docker部署nodejs应用
    mac下使用MongoDB
    使用vue-cli3&vue ui图形化界面创建项目
    javascript中的call, apply(转载)
    跨域请求
  • 原文地址:https://www.cnblogs.com/macula/p/2105579.html
Copyright © 2011-2022 走看看