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