android使用dom解析xml
2013-11-07 23:02
363 查看
books.xml
<?xml version="1.0" encoding="UTF-8"?> <books> <book id="12"> <name>thinking in java</name> <price>85.5</price> </book> <book id="15"> <name>Spring in Action</name> <price>39.0</price> </book> </books>
DomService.java
package com.dom.service; import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; 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; import com.dom.domain.Book; import com.dom.http.HttpUtils; public class DomService { public DomService() { // TODO Auto-generated constructor stub } public ArrayList<Book> getBooks(InputStream inputStream) throws ParserConfigurationException, SAXException, IOException { ArrayList<Book> list = new ArrayList<Book>(); // 创建一个document解析的工厂 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(inputStream); Element element = document.getDocumentElement(); // 获得文档的元素 NodeList bookNodes = element.getElementsByTagName("book"); for (int i = 0; i < bookNodes.getLength(); i++) { Element bookElement = (Element) bookNodes.item(i); Book book = new Book(); book.setId(Integer.parseInt(bookElement.getAttribute("id"))); NodeList childNodes = bookElement.getChildNodes(); for (int j = 0; j < childNodes.getLength(); j++) { if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) { if ("name".equals(childNodes.item(j).getNodeName())) { book.setName(childNodes.item(j).getFirstChild() .getNodeValue()); } else if ("price".equals(childNodes.item(j).getNodeName())) { book.setPrice(Float.parseFloat(childNodes.item(j) .getFirstChild().getNodeValue())); } } } list.add(book); } return list; } /** * * @param args */ public static void main(String[] args) { String path = "http://172.16.47.156:8080/myhttp/books.xml"; InputStream inputStream = HttpUtils.getXml(path); DomService service = new DomService(); try { ArrayList<Book> list = service.getBooks(inputStream); for (Book book : list) { System.out.println(book.toString()); } } catch (ParserConfigurationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SAXException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
HttpUtils.java
package com.dom.http; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class HttpUtils { public HttpUtils() { // TODO Auto-generated constructor stub } /** * 从服务器获取xml文件返回流 * * @param path * @return */ public static InputStream getXml(String path) { InputStream inputStream = null; try { URL url = new URL(path); if (url != null) { HttpURLConnection connection = (HttpURLConnection) url .openConnection(); connection.setConnectTimeout(3000); connection.setDoInput(true); connection.setRequestMethod("GET"); int responseConde = connection.getResponseCode(); if (responseConde == 200) { inputStream = connection.getInputStream(); } } } catch (Exception e) { // TODO: handle exception } return inputStream; } }
Book.java
package com.dom.domain; public class Book { private int id; private String name; private float price; public Book() { // TODO Auto-generated constructor stub } public Book(int id, String name, int price) { super(); this.id = id; this.name = name; this.price = price; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public float getPrice() { return price; } public void setPrice(float price) { this.price = price; } @Override public String toString() { return "Book [id=" + id + ", name=" + name + ", price=" + price + "]"; } }
相关文章推荐
- android如何使用DOM来解析XML+如果做一个表情的弹出框
- android中使用SAX, DOM, 或者pull 来解析XML文档
- Android中使用DOM解析xml时出现org.xml.sax.SAXParseException: Unexpected token
- Android中的XML解析-DOM的使用与开发技巧
- Android成长之路-使用DOM解析XML
- Android使用DOM方式解析XML
- Android -使用DOM(文档对象模型)解析XML文件
- Android -使用DOM(文档对象模型)解析XML文件
- Android -使用DOM(文档对象模型)解析XML文件
- Android中的XML解析-DOM的使用与开发技巧(转)
- Android解析XML方式(三)使用DOM解析XML
- Android-使用DOM解析与生成XML文件
- Android 中使用dom的方式解析XML
- 【已解决】Android中用DOM方式解析xml时使用getElementsByTagName去获得节点结果为空
- Android 使用SAX或者DOM或者pull解析XML文件
- Android解析XML方式(三)使用DOM解析XML
- Android使用DOM解析xml
- android学习——使用SAX、DOM 和 PULL 解析xml文件,及使用pull生成xml文件
- Android 使用SAX或者DOM或者pull解析XML文件
- Android 使用Dom与SAX解析xml文档的方式