XML文档解析实例_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 2348 | 回复: 0   主题: XML文档解析实例        下一篇 
nengqiang.wang
注册用户
等级:中校
经验:1658
发帖:34
精华:0
注册:1970-1-1
状态:离线
发送短消息息给nengqiang.wang 加好友    发送短消息息给nengqiang.wang 发消息
发表于: IP:您无权察看 2015-8-6 14:40:26 | [全部帖] [楼主帖] 楼主

有如下XML文件:

<?xml version="1.0" encoding="UTF-8"?>
<users>
<user id="0">
<name>Tom</name>
<age>23</age>
<sex>Female</sex>
</user>
<user id="1">
<name>Jack</name>
<age>24</age>
<sex>Male</sex>
</user>
<user id="2">
<name>Lucy</name>
<age>23</age>
<sex>Female</sex>
</user>
<user id="3">
<name>Lili</name>
<age>24</age>
<sex>Male</sex>
</user>
</users>


一定记得导入相关的jar包,否则会出错哦。

先定义XML文档解析的接口

public interface XmlDocument {
      public void parserXml(String fileName);
}


1  dom方式解析

package com.xml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DomDemo implements XmlDocument {
      private Document document;
      public void parserXml(String fileName) {
            try {
                  DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
                  DocumentBuilder db = dbf.newDocumentBuilder();
                  Document document = db.parse(fileName);
                  NodeList users = document.getChildNodes();
                  for (int i = 0; i < users.getLength(); i++) {
                        Node user = users.item(i);
                        NodeList userInfo = user.getChildNodes();
                        for (int j = 0; j < userInfo.getLength(); j++) {
                              Node node = userInfo.item(j);
                              NodeList userMeta = node.getChildNodes();
                              for (int k = 0; k < userMeta.getLength(); k++) {
                                    if(userMeta.item(k).getNodeName() != "#text")
                                    System.out.println(userMeta.item(k).getNodeName()
                                    + ":" + userMeta.item(k).getTextContent());
                              }
                              System.out.println();
                        }
                  }
            } catch (FileNotFoundException e) {
                  e.printStackTrace();
            } catch (ParserConfigurationException e) {
                  e.printStackTrace();
            } catch (SAXException e) {
                  e.printStackTrace();
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
}


2   SAX方式

package com.xml;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.StringWriter;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Result;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import javax.xml.transform.sax.TransformerHandler;
import javax.xml.transform.stream.StreamResult;
import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.AttributesImpl;
import org.xml.sax.helpers.DefaultHandler;
public class SaxDemo implements XmlDocument {
      public void parserXml(String fileName) {
            SAXParserFactory saxfac = SAXParserFactory.newInstance();
            try {
                  SAXParser saxparser = saxfac.newSAXParser();
                  InputStream is = new FileInputStream(fileName);
                  saxparser.parse(is, new MySAXHandler());
            } catch (ParserConfigurationException e) {
                  e.printStackTrace();
            } catch (SAXException e) {
                  e.printStackTrace();
            } catch (FileNotFoundException e) {
                  e.printStackTrace();
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
}
class MySAXHandler extends DefaultHandler {
      boolean hasAttribute = false;
      Attributes attributes = null;
      public void startDocument() throws SAXException {
            // System.out.println("文档开始打印了");
      }
      public void endDocument() throws SAXException {
            // System.out.println("文档打印结束了");
      }
      public void startElement(String uri, String localName, String qName,
      Attributes attributes) throws SAXException {
            if (qName.equals("users")) {
                  return;
            }
            if (qName.equals("user")) {
                  return;
            }
            if (attributes.getLength() > 0) {
                  this.attributes = attributes;
                  this.hasAttribute = true;
            }
      }
      public void endElement(String uri, String localName, String qName)
      throws SAXException {
            if (hasAttribute && (attributes != null)) {
                  for (int i = 0; i < attributes.getLength(); i++) {
                        System.out.print(attributes.getQName(0) + ":"
                        + attributes.getValue(0));
                  }
            }
      }
      public void characters(char[] ch, int start, int length)
      throws SAXException {
            System.out.print(new String(ch, start, length));
      }
}


3   JDOM方式

package com.xml;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.input.SAXBuilder;
import org.jdom2.output.XMLOutputter;
public class JDomDemo implements XmlDocument {
      public void parserXml(String fileName) {
            SAXBuilder builder = new SAXBuilder();
            try {
                  Document document = builder.build(fileName);
                  Element users = document.getRootElement();
                  List userList = users.getChildren("user");
                  for (int i = 0; i < userList.size(); i++) {
                        Element user = (Element) userList.get(i);
                        List userInfo = user.getChildren();
                        for (int j = 0; j < userInfo.size(); j++) {
                              System.out.println(((Element) userInfo.get(j)).getName()
                              + ":" + ((Element) userInfo.get(j)).getValue());
                        }
                        System.out.println();
                  }
            } catch (JDOMException e) {
                  e.printStackTrace();
            } catch (IOException e) {
                  e.printStackTrace();
            }
      }
}


4   DOM4J方式

package com.xml;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.Iterator;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
public class Dom4jDemo implements XmlDocument {
      public void parserXml(String fileName) {
            File inputXml = new File(fileName);
            SAXReader saxReader = new SAXReader();
            try {
                  Document document = saxReader.read(inputXml);
                  Element users = document.getRootElement();
                  for (Iterator i = users.elementIterator(); i.hasNext();) {
                        Element user = (Element) i.next();
                        for (Iterator j = user.elementIterator(); j.hasNext();) {
                              Element node = (Element) j.next();
                              System.out.println(node.getName() + ":" + node.getText());
                        }
                        System.out.println();
                  }
            } catch (DocumentException e) {
                  System.out.println(e.getMessage());
            }
      }
}


本文参考:http://www.cnblogs.com/lanxuezaipiao/archive/2013/05/17/3082949.html



人们都向往和寻找快乐,其实快乐就是一种心情,秘密隐藏于人的心中。快乐从不曾远离我们,而是我们远离了快乐。原本单纯的心,一旦复杂起来,快乐和幸福就 会远离而去,烦恼和忧愁就会随之而来。






赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论