通过dom4j解析xml字符串

来源:互联网 发布:mac book pro 2018 编辑:程序博客网 时间:2024/05/22 10:52

[java] view plain copy
  1. import <a href="http://lib.csdn.net/base/javase" class='replace_word' title="Java SE知识库" target='_blank' style='color:#df3434; font-weight:bold;'>Java</a>.util.Iterator;  
  2. import java.util.List;  
  3. import org.dom4j.Attribute;  
  4. import org.dom4j.Document;  
  5. import org.dom4j.DocumentHelper;  
  6. import org.dom4j.Element;  
  7. public class Test {  
  8.     @SuppressWarnings("unchecked")  
  9.     public static void main(String[] args) throws Exception {  
  10.         String xml = "<request> <param name='service'>single_trade_query </param><param name='_input_charset'>utf-8 </param><param name='partner'>2088001513232645 </param><param name='out_trade_no'>20090422577264 </param></request>";  
  11.         Document document = DocumentHelper.parseText(xml);  
  12.         Element root = document.getRootElement();  
  13.         List<Element> elements = root.elements();  
  14.         for (Iterator<Element> it = elements.iterator(); it.hasNext();) {  
  15.             Element element = it.next();  
  16.             List<Attribute> attributes = element.attributes();  
  17.             for (int i = 0; i < attributes.size(); i++) {  
  18.                 Attribute attribute = attributes.get(i);  
  19.                 if ("service".equals(attribute.getText())) {  
  20.                     System.out.println(element.getName() + "  :  "  
  21.                             + element.getText());  
  22.                 }  
  23.             }  
  24.         }  
  25.     }  
  26. }  

或者:

[java] view plain copy
  1. import java.io.StringReader;  
  2. import java.util.Iterator;  
  3. import java.util.List;  
  4. import org.dom4j.Document;  
  5. import org.dom4j.Element;  
  6. import org.dom4j.io.SAXReader;  
  7. import org.xml.sax.InputSource;  
  8. public class Test {  
  9.       
  10.     @SuppressWarnings("unchecked")  
  11.     public static void main(String[] args) throws Exception {  
  12.         String xml = "<servlet><description></description><display-name>TestServlet</display-name><servlet-name>TestServlet</servlet-name><servlet-class>test.TestServlet</servlet-class></servlet>";  
  13.         InputSource in = new InputSource(new StringReader(xml));  
  14.         in.setEncoding("UTF-8");  
  15.         SAXReader reader = new SAXReader();  
  16.         Document document = reader.read(in);  
  17.         Element root = document.getRootElement();  
  18.         List<Element> elements = root.elements();  
  19.         for(Iterator<Element> it = elements.iterator();it.hasNext();){  
  20.             Element element = it.next();  
  21.             System.out.println(element.getName()+" : "+element.getTextTrim());  
  22.         }  
  23.           
  24.     }  
  25. }  

或者增加ID属性,直接通过ID获取某个属性值:

[java] view plain copy
  1. import java.io.StringReader;  
  2. import org.dom4j.Document;  
  3. import org.dom4j.DocumentException;  
  4. import org.dom4j.Element;  
  5. import org.dom4j.io.SAXReader;  
  6. import org.xml.sax.InputSource;  
  7. public class Test {  
  8.     public static void main(String args[]) {  
  9.         String xml = "<request> <param name='service' ID='tt'>single_trade_query </param><param name='_input_charset'>utf-8 </param><param name='partner'>2088001513232645 </param><param name='out_trade_no'>20090422577264 </param></request>";  
  10.         InputSource source = new InputSource(new StringReader(xml));  
  11.         SAXReader reader = new SAXReader();  
  12.         Document document = null;  
  13.         try {  
  14.             document = reader.read(source);  
  15.         } catch (DocumentException e) {  
  16.             // TODO Auto-generated catch block  
  17.             e.printStackTrace();  
  18.         }  
  19.         Element root = document.getRootElement();  
  20.         System.out.println(document.elementByID("tt").getTextTrim());  
  21.         System.out.println(root.elementByID("tt").getTextTrim());  
  22.     }   
  23. }  

注意:通过ID获取,元素ID属性名必须为“大写ID”,小写的“id”会认为是普通属性!

原创粉丝点击