Dom解析xml
package com.example.domresovler;
import java.io.InputStream;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btnDomResolver(View v){
try {
//step1:得到一个dom解析器的工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//step2:通过工厂实例对象生成一个document解析器对象
DocumentBuilder db = factory.newDocumentBuilder();
//step3:开始解析xml
InputStream is = getAssets().open("Books.xml");
//返回的是一个文档对象
Document document = db.parse(is);
//得到根节点 Books
Element root = document.getDocumentElement();
//得到Books根节点下所有的子节点 Book元素
NodeList nodeList = root.getElementsByTagName("Book");
//创建要给容器
StringBuffer sb = new StringBuffer();
//遍历子节点
for (int i = 0; i < nodeList.getLength(); i++) {
//Book
Element element = (Element) nodeList.item(i);
String name = element.getElementsByTagName("name").item(0).getTextContent();//得到name值
String price = element.getElementsByTagName("price").item(0).getTextContent();
String author = element.getElementsByTagName("author").item(0).getTextContent();
sb.append("书名 : "+name+" 价格 : "+price+" 作者 : "+author+"\n");
}
System.out.println("--->"+sb.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
Pull解析
package com.example.pullresolver;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import android.app.Activity;
import android.os.Bundle;
import android.util.Xml;
import android.view.View;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void btnPullResolver(View v){
List<Book> books = pullResolverXml();
System.out.println("哈哈哈 : "+books.toString());
}
/**
* 使用Pull解析xml文档
*/
private List<Book> pullResolverXml(){
try {
//step1:创建一个pull解析器对象
XmlPullParser parser = Xml.newPullParser();
//step2:开始解析xml
InputStream is = getAssets().open("Books.xml");
parser.setInput(is, "utf-8");
int type = parser.getEventType();//0 != 1 true 0 != 0 false
List<Book> books = null;
Book book = null;
//判断是否已经读取xml文档的结尾
while(type != XmlPullParser.END_DOCUMENT){
switch (type) {
case XmlPullParser.START_TAG:
{
if("Books".equals(parser.getName())){
//创建集合
books = new ArrayList<Book>();
}else if("Book".equals(parser.getName())){
//创建Book对象
book = new Book();
}else if("name".equals(parser.getName())){
//取出name标签里面的内容
String name = parser.nextText();
book.setName(name);
}else if("price".equals(parser.getName())){
String price = parser.nextText();
book.setPrice(price);
}else if("author".equals(parser.getName())){
String author = parser.nextText();
book.setAuthor(author);
}
}
break;
case XmlPullParser.END_TAG://结束标签
if("Book".equals(parser.getName())){
//添加到集合
books.add(book);
}
break;
}
//让pull解析器对象往下移动一行
type = parser.next();
}
return books;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
book
package com.example.pullresolver;
public class Book {
private String name;
private String price;
private String author;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
@Override
public String toString() {
return "Book [name=" + name + ", price=" + price + ", author=" + author
+ "]";
}
}