• dom4j


    dom4j 是一个java的xml api,类似jdom,用来读写xml文件。

    JDOM解析器:

    Dom4j:

    1.读取XML文件:SAXReader reader=new SAXReader();

            Document document=reader.read(new File("input.xml"));

    附录:1.cannot make a static reference to a non-static method

    因为,非静态的变量是依赖于对象存在的,对象必须实例化之后,它的变量才会在内存中存在。而静态成员不依赖于对象存在,即使是类所属的对象不存在,也可以被访问,它对整个进程而言是全局的。

    2.string 比较 compareTo, equals

    A.equals(B); 是值的比较,但当A是某个返回值时就不得不先要确定是否为null,所以比较安全的做法是B.equals(A) 这样如果A是 null 返回值为false

    compareTo的返回值 是 0 1 -1

     1 import org.dom4j.io.SAXReader;
     2 import org.dom4j.Document;
     3 import org.dom4j.DocumentException;
     4 import org.dom4j.Element;
     5 import org.dom4j.Node;
     6 
     7 import java.io.InputStream;
     8 import java.util.Iterator;
     9 import java.util.List;
    10 
    11 
    12 public class testdom {
    13     
    14     public static Document parse2Document(String xmlFilePath){
    15         SAXReader reader=new SAXReader();
    16         Document document=null;
    17         try{
    18             InputStream in=testdom.class.getResourceAsStream(xmlFilePath);
    19             document=reader.read(in);
    20         }catch (DocumentException e){
    21             System.out.println(e.getMessage());
    22             e.printStackTrace();
    23         }
    24         return document;
    25     }
    26     public static void testParseXMLData(String xmlFileName){
    27         
    28         SAXReader reader=new SAXReader();
    29         Document document=parse2Document(xmlFileName);
    30         Element root=document.getRootElement();
    31         getElementList(root);
    32         /*StringBuffer sb=new StringBuffer();
    33         sb.append("通过Dom4j解析xml,并输出数据:\n");
    34         sb.append(xmlFileName+"\n");
    35         sb.append("---------遍历start-----------\n");
    36         for (Iterator i_pe=root.elementIterator();i_pe.hasNext();){
    37             Element e_pe=(Element) i_pe.next();
    38             String person=e_pe.getName();//name for what?就是element的名字
    39             String id=e_pe.attributeValue("id");
    40             String sex=e_pe.attributeValue("sex");
    41             String name=e_pe.element("name").getText();
    42             String age=e_pe.element("age").getText();
    43             
    44             sb.append(person+":\n");
    45             sb.append("\tid="+id+"sex="+sex+"\n");
    46             sb.append("\t"+"name="+name+"age="+age+"\n");
    47             
    48             Element e_adds=e_pe.element("adds");
    49             sb.append("\t"+e_adds.getName()+"\n");
    50         }
    51         System.out.println(sb.toString());*/
    52     }
    53     public static void getElementList(Element element){
    54         List elements=element.elements();
    55         if (elements.size()==0){
    56             //System.out.println("IN THE LEAF"+element.getName());
    57         }else{
    58             
    59             String ok="ok";
    60             if(ok.equals(element.attributeValue("node-type"))){
    61                 //System.out.println(element.attributeValue("node-type"));
    62                 System.out.println(element.element("span").getText());
    63             }else{
    64                 for(Iterator it=elements.iterator();it.hasNext();){
    65                     Element elem=(Element)it.next();
    66                     getElementList(elem);
    67                 }
    68             }
    69         }
    70     }
    71     
    72     public static void main(String args[]){
    73         testParseXMLData("/test2.xml");
    74     }
    75     
     }

     将string 变为document

    import org.dom4j.Document;


    import org.dom4j.DocumentException;


    import org.dom4j.DocumentHelper;

    try {
    Document doc = DocumentHelper.parseText("<root></root>");
    } catch (DocumentException e) {
    e.printStackTrace();
    }

     
  • 相关阅读:
    软件工程第二次作业
    软件工程第一次作业
    软件工程最后一次作业
    软件工程第四次作业
    软件工程第三次作业
    软件工程第二次作业
    软件工程第一次作业
    《算法笔记》2.2小节——C/C++快速入门->顺序结构
    大数阶乘
    printf("%f ",5)的输出结果为什么是0.000000
  • 原文地址:https://www.cnblogs.com/lauraxia/p/2890651.html
Copyright © 2020-2023  润新知