使用Dom4j對XML文檔創建與解析
阿新 • • 發佈:2019-04-28
body 設置 文檔 lazy write cat equal parse 進行
創建XML文件:
public class Dom4jCreateXml { public void testCreatXml() { //創建文檔對象 Document document = DocumentHelper.createDocument(); //創建跟節點 Element root = document.addElement("students"); //根據根節點創建子節點 Element stu01 = root.addElement("student");//添加student子節點id屬性 stu01.addAttribute("id", "001"); //根據student子節點創建name子節點 Element stu01Name = stu01.addElement("name"); //給子節點name添加文本 stu01Name.addText("zhangsan"); //根據stu01創建子節點age Element stu01Age = stu01.addElement("age"); //給子節點age添加文本 stu01Age.addText("23");//設置輸出編碼格式 OutputFormat format = OutputFormat.createCompactFormat(); format.setEncoding("utf-8"); //輸出指定的xml文件 Writer out; try { out = new FileWriter("E://lazyli/test.xml"); //創建XML輸出對象,以指定的格式輸出 XMLWriter writer = new XMLWriter(out, format); writer.write(document); System.out.println("生成xml文件成功!"); out.close(); } catch (Exception e) { System.out.println("生成xml文件失敗!"); e.printStackTrace(); } } /** * 創建一個html格式的xml * <?xml version="1.0" encoding="UTF-8"?> * <Packet type="REQUEST" version="1.0"> * <Head> * <RequestID> AC00003900021456305194844</RequestID> * <RequestType>0002</RequestType> * <User>AC000039</User> * <Password>bc0TYXab4UjcZiOtX9XpdQ</Password> * </Head> * <Body> * …… * </Body> * </Packet> */ public void testCreatXml2() { //創建一個Document對象 Document document = DocumentHelper.createDocument(); //創建一個根節點 Element root = document.addElement("Packet"); //設置根節點屬性 root.addAttribute("type", "REQUEST"); root.addAttribute("version", "1.0"); //創建root的子節點head,body Element eleHead = root.addElement("head"); Element eleBody = root.addElement("body"); //處理子節點head,有三個子節點RequestType,User,Password,並添加各個的文本 Element eleRequestType = eleHead.addElement("RequestType"); eleRequestType.addText("AC00003900021456305194844"); Element eleUser = eleHead.addElement("User"); eleUser.addText("AC000039"); Element elePassword = eleHead.addElement("Password"); elePassword.addText("bc0TYXab4UjcZiOtX9XpdQ"); //處理子節點Body,添加子節點hello,文本world Element eleHello = eleBody.addElement("Hello"); eleHello.addText("world"); //指定文檔輸出編碼格式 OutputFormat format = OutputFormat.createCompactFormat(); format.setEncoding("utf-8"); Writer out; try { //創建一個文檔輸出流對象,向指定的文件中輸入 out = new FileWriter("E://lazyli/test02.xml"); //創建XMLWriter對象 XMLWriter writer = new XMLWriter(out, format); writer.write(document); System.out.println("成功生成xml文件!"); out.close(); writer.close(); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { Dom4jCreateXml createXml = new Dom4jCreateXml(); // createXml.testCreatXml(); createXml.testCreatXml2(); } }
XML文件的解析
public class ParseXml01 { User user = new User(); //遞歸遍歷xml文檔,獲取裏面的元素 public void parseElement02(Element rootElement) { Element element; //使用叠代器遍歷根節點 for (Iterator iterator = rootElement.elementIterator(); iterator.hasNext(); ) { //獲取根子節下面的節點 element = (Element) iterator.next(); //打印節點的名字和文本 //System.out.println("當前節點:" + element.getName() + ",文本:" +element.getTextTrim()); //將文件中的用戶信息提取出來 if (element.getName().equals("User")) { if (element.getName() != null && element.getName() != "") { user.setName(element.getTextTrim()); } } if (element.getName().equals("Password")) { if (element.getName() != null && element.getName() != "") { user.setPassword(element.getTextTrim()); } } //判斷當前節點是否存在子節點,存在的話就繼續遍歷 //得到節點類型,為1代表有子節點 if (element.getNodeType() == Node.ELEMENT_NODE) { if (element.hasContent()) { parseElement02(element); } } } } //解析 public void parseXmlMethod(File file) throws Exception { //創建SAXReader解析對象 SAXReader reader = new SAXReader(); //根據SAXReader對象創建Document對象 Document document = reader.read(file); //document對象得到根節點 Element eleRoot = document.getRootElement(); //打印root信息 System.out.println("根元素:" + eleRoot.getName() + ",屬性:"); //調用遞歸方法進行解析節點信息 parseElement02(eleRoot); } //打印用戶信息 public void userInfo() throws Exception { //調用解析方法,解析文件,輸出文件中的用戶信息 parseXmlMethod(new File("E://lazyli/test02.xml")); System.out.println("用戶名:" + user.getName() + ",密碼:" + user.getPassword()); } public static void main(String[] args) throws Exception { ParseXml01 parseXml01 = new ParseXml01(); parseXml01.userInfo(); } }
使用Dom4j對XML文檔創建與解析