dom4j
来源:互联网 发布:李天生sql视频教程 编辑:程序博客网 时间:2024/06/16 19:56
生成xml,或转化为string
package dom4j;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.XMLWriter;import java.io.*;public class XmlDom4J {public void generateDocument(){Document document = DocumentHelper.createDocument(); Element catalogElement = document.addElement("catalog"); catalogElement.addComment("An XML Catalog"); catalogElement.addProcessingInstruction("target","text"); Element journalElement = catalogElement.addElement("journal"); journalElement.addAttribute("title", "XML Zone"); journalElement.addAttribute("publisher", "IBM developerWorks"); Element articleElement=journalElement.addElement("article"); articleElement.addAttribute("level", "Intermediate"); articleElement.addAttribute("date", "December-2001"); Element titleElement=articleElement.addElement("title"); titleElement.setText("Java configuration with XML Schema"); Element authorElement=articleElement.addElement("author"); Element firstNameElement=authorElement.addElement("firstname"); firstNameElement.setText("Marcello"); Element lastNameElement=authorElement.addElement("lastname"); lastNameElement.setText("Vitaletti");// document.addDocType("catalog",// null,"file://c:/Dtds/catalog.dtd"); String str = document.asXML();// doc = DocumentHelper.parseText(xml); // 将字符串转为XML System.out.println(str); try{ XMLWriter output = new XMLWriter( new FileWriter( new File("c:/catalog/catalog.xml") )); output.write( document ); output.close(); } catch(IOException e){System.out.println(e.getMessage());}}public static void main(String[] argv){XmlDom4J dom4j=new XmlDom4J();dom4j.generateDocument();}}
修改xml
package dom4j;import org.dom4j.Document;import org.dom4j.Element;import org.dom4j.Attribute;import java.util.List;import java.util.Iterator;import org.dom4j.io.XMLWriter;import java.io.*;import org.dom4j.DocumentException;import org.dom4j.io.SAXReader; public class Dom4JParser {public void modifyDocument(File inputXml){ try{ SAXReader saxReader = new SAXReader(); Document document = saxReader.read(inputXml); List list = document.selectNodes("//article/@level" ); Iterator iter=list.iterator(); while(iter.hasNext()){ Attribute attribute=(Attribute)iter.next(); if(attribute.getValue().equals("Intermediate")) attribute.setValue("Introductory"); } list = document.selectNodes("//article/@date" ); iter=list.iterator(); while(iter.hasNext()){ Attribute attribute=(Attribute)iter.next(); if(attribute.getValue().equals("December-2001")) attribute.setValue("October-2002"); } list = document.selectNodes("//article" ); iter=list.iterator(); while(iter.hasNext()){ Element element=(Element)iter.next(); Iterator iterator=element.elementIterator("title"); while(iterator.hasNext()){ Element titleElement=(Element)iterator.next(); if(titleElement.getText().equals("Java configuration with XMLchema")) titleElement.setText("Create flexible and extensible XML schema"); } } list = document.selectNodes("//article/author" ); iter=list.iterator(); while(iter.hasNext()){ Element element=(Element)iter.next(); Iterator iterator=element.elementIterator("firstname"); while(iterator.hasNext()){ Element firstNameElement=(Element)iterator.next(); if(firstNameElement.getText().equals("Marcello")) firstNameElement.setText("Ayesha"); } } list = document.selectNodes("//article/author" ); iter=list.iterator(); while(iter.hasNext()){ Element element=(Element)iter.next(); Iterator iterator=element.elementIterator("lastname"); while(iterator.hasNext()){ Element lastNameElement=(Element)iterator.next(); if(lastNameElement.getText().equals("Vitaletti")) lastNameElement.setText("Malik"); } } XMLWriter output = new XMLWriter( new FileWriter( new File("c:/catalog/catalog-modified.xml") )); output.write( document ); output.close(); } catch(DocumentException e) { System.out.println(e.getMessage()); } catch(IOException e){ System.out.println(e.getMessage()); } } public static void main(String[] argv){ Dom4JParser dom4jParser=new Dom4JParser(); dom4jParser.modifyDocument(new File("c:/catalog/catalog.xml")); }}
读取xml格式的字符串
//先加入dom4j.jar包 package dom4j; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.DocumentHelper; import org.dom4j.Element; public class TestDom4j { public void readStringXml(String xml) { Document doc = null; try { // 读取并解析XML文档 // SAXReader就是一个管道,用一个流的方式,把xml文件读出来 // // SAXReader reader = new SAXReader(); //User.hbm.xml表示你要解析的xml文档 // Document document = reader.read(new File("User.hbm.xml")); // 下面的是通过解析xml字符串的 doc = DocumentHelper.parseText(xml); // 将字符串转为XML Element rootElt = doc.getRootElement(); // 获取根节点 System.out.println("根节点:" + rootElt.getName()); // 拿到根节点的名称 Iterator iter = rootElt.elementIterator("head"); // 获取根节点下的子节点head // 遍历head节点 while (iter.hasNext()) { Element recordEle = (Element) iter.next(); String title = recordEle.elementTextTrim("title"); // 拿到head节点下的子节点title值 System.out.println("title:" + title); Iterator iters = recordEle.elementIterator("script"); // 获取子节点head下的子节点script // 遍历Header节点下的Response节点 while (iters.hasNext()) { Element itemEle = (Element) iters.next(); String username = itemEle.elementTextTrim("username"); // 拿到head下的子节点script下的字节点username的值 String password = itemEle.elementTextTrim("password"); System.out.println("username:" + username); System.out.println("password:" + password); } } Iterator iterss = rootElt.elementIterator("body"); ///获取根节点下的子节点body // 遍历body节点 while (iterss.hasNext()) { Element recordEless = (Element) iterss.next(); String result = recordEless.elementTextTrim("result"); // 拿到body节点下的子节点result值 System.out.println("result:" + result); Iterator itersElIterator = recordEless.elementIterator("form"); // 获取子节点body下的子节点form // 遍历Header节点下的Response节点 while (itersElIterator.hasNext()) { Element itemEle = (Element) itersElIterator.next(); String banlce = itemEle.elementTextTrim("banlce"); // 拿到body下的子节点form下的字节点banlce的值 String subID = itemEle.elementTextTrim("subID"); System.out.println("banlce:" + banlce); System.out.println("subID:" + subID); } } } catch (DocumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } } /** * @description 将xml字符串转换成map * @param xml * @return Map */ public static Map readStringXmlOut(String xml) { Map map = new HashMap(); Document doc = null; try { // 将字符串转为XML doc = DocumentHelper.parseText(xml); // 获取根节点 Element rootElt = doc.getRootElement(); // 拿到根节点的名称 System.out.println("根节点:" + rootElt.getName()); // 获取根节点下的子节点head Iterator iter = rootElt.elementIterator("head"); // 遍历head节点 while (iter.hasNext()) { Element recordEle = (Element) iter.next(); // 拿到head节点下的子节点title值 String title = recordEle.elementTextTrim("title"); System.out.println("title:" + title); map.put("title", title); // 获取子节点head下的子节点script Iterator iters = recordEle.elementIterator("script"); // 遍历Header节点下的Response节点 while (iters.hasNext()) { Element itemEle = (Element) iters.next(); // 拿到head下的子节点script下的字节点username的值 String username = itemEle.elementTextTrim("username"); String password = itemEle.elementTextTrim("password"); System.out.println("username:" + username); System.out.println("password:" + password); map.put("username", username); map.put("password", password); } } //获取根节点下的子节点body Iterator iterss = rootElt.elementIterator("body"); // 遍历body节点 while (iterss.hasNext()) { Element recordEless = (Element) iterss.next(); // 拿到body节点下的子节点result值 String result = recordEless.elementTextTrim("result"); System.out.println("result:" + result); // 获取子节点body下的子节点form Iterator itersElIterator = recordEless.elementIterator("form"); // 遍历Header节点下的Response节点 while (itersElIterator.hasNext()) { Element itemEle = (Element) itersElIterator.next(); // 拿到body下的子节点form下的字节点banlce的值 String banlce = itemEle.elementTextTrim("banlce"); String subID = itemEle.elementTextTrim("subID"); System.out.println("banlce:" + banlce); System.out.println("subID:" + subID); map.put("result", result); map.put("banlce", banlce); map.put("subID", subID); } } } catch (DocumentException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return map; } public static void main(String[] args) { // 下面是需要解析的xml字符串例子 String xmlString = "<html>" + "<head>" + "<title>dom4j解析一个例子</title>" + "<script>" + "<username>yangrong</username>" + "<password>123456</password>" + "</script>" + "</head>" + "<body>" + "<result>0</result>" + "<form>" + "<banlce>1000</banlce>" + "<subID>36242519880716</subID>" + "</form>" + "</body>" + "</html>"; /* * Test2 test = new Test2(); test.readStringXml(xmlString); */ Map map = readStringXmlOut(xmlString); Iterator iters = map.keySet().iterator(); while (iters.hasNext()) { String key = iters.next().toString(); // 拿到键 String val = map.get(key).toString(); // 拿到值 System.out.println(key + "=" + val); } } }
- Dom4j
- dom4j
- DOM4J
- DOM4j
- Dom4j
- Dom4j
- dom4j
- dom4j
- dom4j
- dom4j
- dom4j
- dom4j
- dom4j
- dom4j
- DOM4J
- dom4j
- dom4j
- Dom4j
- Java输出字符串的前n个字节
- Windows 核心编程之Dll 延时加载
- linux下发送外部邮件
- 如何在程序中嵌入google的V8 Javascript引擎
- java 得到项目路径
- dom4j
- V8 Javascript engine之所以快
- Python统计一个英文文档中各单词出现的行数
- IEEE754,浮点数的精度
- 常用的webservice接口
- Android学习札记24:收集到的一些关于解决Bitmap OOM内存溢出的方法
- 条码扫描二维码扫描——ZXing android 源码简化
- 京东金融,路依然漫漫
- Android 浅谈ViewStub