通过dom4j解析xml字符串
来源:互联网 发布:mac book pro 2018 编辑:程序博客网 时间:2024/05/22 10:52
- 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;
- import java.util.List;
- import org.dom4j.Attribute;
- import org.dom4j.Document;
- import org.dom4j.DocumentHelper;
- import org.dom4j.Element;
- public class Test {
- @SuppressWarnings("unchecked")
- public static void main(String[] args) throws Exception {
- 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>";
- Document document = DocumentHelper.parseText(xml);
- Element root = document.getRootElement();
- List<Element> elements = root.elements();
- for (Iterator<Element> it = elements.iterator(); it.hasNext();) {
- Element element = it.next();
- List<Attribute> attributes = element.attributes();
- for (int i = 0; i < attributes.size(); i++) {
- Attribute attribute = attributes.get(i);
- if ("service".equals(attribute.getText())) {
- System.out.println(element.getName() + " : "
- + element.getText());
- }
- }
- }
- }
- }
或者:
- import java.io.StringReader;
- import java.util.Iterator;
- import java.util.List;
- import org.dom4j.Document;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- import org.xml.sax.InputSource;
- public class Test {
-
- @SuppressWarnings("unchecked")
- public static void main(String[] args) throws Exception {
- String xml = "<servlet><description></description><display-name>TestServlet</display-name><servlet-name>TestServlet</servlet-name><servlet-class>test.TestServlet</servlet-class></servlet>";
- InputSource in = new InputSource(new StringReader(xml));
- in.setEncoding("UTF-8");
- SAXReader reader = new SAXReader();
- Document document = reader.read(in);
- Element root = document.getRootElement();
- List<Element> elements = root.elements();
- for(Iterator<Element> it = elements.iterator();it.hasNext();){
- Element element = it.next();
- System.out.println(element.getName()+" : "+element.getTextTrim());
- }
-
- }
- }
或者增加ID属性,直接通过ID获取某个属性值:
- import java.io.StringReader;
- import org.dom4j.Document;
- import org.dom4j.DocumentException;
- import org.dom4j.Element;
- import org.dom4j.io.SAXReader;
- import org.xml.sax.InputSource;
- public class Test {
- public static void main(String args[]) {
- 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>";
- InputSource source = new InputSource(new StringReader(xml));
- SAXReader reader = new SAXReader();
- Document document = null;
- try {
- document = reader.read(source);
- } catch (DocumentException e) {
-
- e.printStackTrace();
- }
- Element root = document.getRootElement();
- System.out.println(document.elementByID("tt").getTextTrim());
- System.out.println(root.elementByID("tt").getTextTrim());
- }
- }
注意:通过ID获取,元素ID属性名必须为“大写ID”,小写的“id”会认为是普通属性!