您的位置:首页 > 移动开发 > Android开发

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 + "]";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: