android学习四:xml

主要是想简单的学习xml的解析。

服务器端直接放两个xml文件。我们的app客户端通过http get的方式得到两个文件的内容。如下。

person.xml

<?xml version="1.0" encoding="UTF-8"?>
<persons>
	<person id = "23">
		<name>张老师</name>
		<age>21</age>
	</person>
	<person id = "20">
		<name>李老师</name>
		<age>25</age>
	</person>
</persons>

book.xml

<?xml version="1.0" encoding="UTF-8"?>
<books>
	<book id="10">
		<name> java </name>
		<price>12.0</price>
	</book>
	
	<book id="11">
		<name> C++ </name>
		<price>13.0</price>
	</book>
</books>

客户端解析下面的数据。

1、使用SAX解析 person.xml






2、使用dom解析book.xml

根据xml可以新建一个类Book

public class Book {

	private int id;
	private String name;
	private float 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 this.id + ":" + this.name + ":" + this.price;
	}
}
从xml文件里面获取到InputStream。下面对InputStream进行解析。原理不是很了解。但是套用还是可以使用的。
public List<Book> getBooks(InputStream inputStream) throws Exception {
<span style="white-space:pre">		</span>List<Book> list = new ArrayList<Book>();
<span style="white-space:pre">		</span>/** 下面的四个语句基本固定的 */
<span style="white-space:pre">		</span>DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
<span style="white-space:pre">		</span>DocumentBuilder builder = factory.newDocumentBuilder();
<span style="white-space:pre">		</span>Document document = builder.parse(inputStream);
<span style="white-space:pre">		</span>Element element = document.getDocumentElement();


<span style="white-space:pre">		</span>/** 每个book节点下面的所有内容的list集合 */
<span style="white-space:pre">		</span>NodeList bookNodes = element.getElementsByTagName("book");
<span style="white-space:pre">		</span>for (int i = 0; i < bookNodes.getLength(); i++) {
<span style="white-space:pre">			</span>/** 获取每个book */
<span style="white-space:pre">			</span>Element bookElement = (Element) bookNodes.item(i);
<span style="white-space:pre">			</span>Book book = new Book();
<span style="white-space:pre">			</span>/** book的属性 */
<span style="white-space:pre">			</span>book.setId(Integer.parseInt(bookElement.getAttribute("id")));
<span style="white-space:pre">			</span>/** book的子节点 */
<span style="white-space:pre">			</span>NodeList childNodes = bookElement.getChildNodes();
<span style="white-space:pre">			</span>for (int j = 0; j < childNodes.getLength(); j++) {
<span style="white-space:pre">				</span>if (childNodes.item(j).getNodeType() == Node.ELEMENT_NODE) {
<span style="white-space:pre">					</span>if ("name".equals(childNodes.item(j).getNodeName())) {
<span style="white-space:pre">						</span>book.setName(childNodes.item(j).getFirstChild()
<span style="white-space:pre">								</span>.getNodeValue());
<span style="white-space:pre">					</span>} else if ("price".equals(childNodes.item(j).getNodeName())) {
<span style="white-space:pre">						</span>book.setPrice(Float.parseFloat(childNodes.item(j)
<span style="white-space:pre">								</span>.getFirstChild().getNodeValue()));
<span style="white-space:pre">					</span>}
<span style="white-space:pre">				</span>}
<span style="white-space:pre">			</span>}
<span style="white-space:pre">			</span>list.add(book);
<span style="white-space:pre">		</span>}
<span style="white-space:pre">		</span>return list;
<span style="white-space:pre">	</span>}









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值