Android开发学习——Android XML解析——DOM解析
来源:互联网 发布:itunes如何删除软件 编辑:程序博客网 时间:2024/06/02 21:28
以下文章是从老罗教学中的总结,感谢老罗
需要解析的XML格式为:
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book id="12">
<name>疯狂Java讲义</name>
<price>99元</price>
</book>
<book id="15">
<name>Android网络开发技术实战经典</name>
<price>69元</price>
</book>
</books>
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
首先创建实体类
package com.dom.xml.domain;
public class Book {
private int id;
private String name;
private float price;
public Book() {
}
//省略getter,setter方法
@Override
public String toString() {
return "Book [id=" + id + ", name=" + name + ", price=" + price + "]";
}
}
创建返回输入流的工具类
package com.dom.xml.http;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class HttpUtils {
public HttpUtils() {
// TODO Auto-generated constructor stub
}
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 code = connection.getResponseCode();
if (code == 200) {
inputStream = connection.getInputStream();
}
}
} catch (Exception e) {
// TODO: handle exception
}
return inputStream;
}
}
创建service,并包含测试方法
package com.dom.xml.service;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.soap.Node;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import com.dom.xml.domain.Book;
import com.dom.xml.http.HttpUtils;
public class DomService {
public DomService() {
// TODO Auto-generated constructor stub
}
public List<Book> getBooks(InputStream inputStream) throws Exception {
List<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 bookeElement = (Element) bookNodes.item(i);
Book book = new Book();
book.setId(Integer.parseInt(bookeElement.getAttribute("id")));
NodeList childNodes = bookeElement.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) {
// TODO Auto-generated method stub
String path = "http://192.168.0.102:8080/myhttp/book.xml";
InputStream inputStream = HttpUtils.getXML(path);
DomService service = new DomService();
try {
List<Book> list = service.getBooks(inputStream);
for (Book book : list) {
System.out.println(book.toString());
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
- android—DOM解析xml
- Android开发学习——Android XML解析——DOM解析
- Android XML解析学习——Dom方式
- android XML解析学习——Dom方式
- Android XML解析学习——Dom方式 .
- Android XML解析技术——DOM
- Android XML文档解析(二)——DOM解析
- Android开发之XML解析——SAX解析XML
- android实现xml解析技术——Sax、Pull、Dom
- Android解析XML——SAX、PULL、DOM
- android中解析XML文件方式—DOM SAX PULL
- 《Android开发从零开始》——28.使用DOM和pull解析XML
- Android中的XML解析与生成——DOM解析xml
- Android--xml解析(Dom)
- Android--DOM解析XML
- Android DOM解析XML
- Android DOM解析XML
- android--------------xml Dom解析
- 第十周项目三 血型统计
- 云计算概述
- 第十周项目1--单步运行
- PAT(A) 1025
- STL顺利容器之双端队列(deque)
- Android开发学习——Android XML解析——DOM解析
- native2ascii
- poj 1005
- 第二十二讲:ListView与Adapter(四)
- 今天第一次写博客
- 第二章 线性表思维导图
- springmvc RequestMapping路径带点
- ChemStations.ChemCAD.v6.3.0.3903 化工流程模拟
- Sescoi.WorkNC.G3.V20.06 模具加工计算机辅助制造(CAM)软件系统