设置DOM的一般步骤
- 创建目标类;
- 创建ArrayList,用来存放解析结果;
- 通过DocumentBuilderFactory.newInstance() 获取factory;
- 通过factoty获得buider实例;
- 取得Dom builder.parse(InputStream);
- 寻找根节点 dom.getDocumentElement();
- 通过根节点获取所有的item; root.getElementByTagName();
- 遍历所有的item;
- 可以获得attribute;
- 这时可以获取没个item下的子节点;
- 遍历每个子节点;
- 判断类型
- 根据childNode.getNodeName() 将对应的值 childNode.getFirstChild().getNodeValue() 存入目标类的对象中
- 添加对象至Arraylist中;
package com.example.xmltest;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
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.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity {
private Button dom_button;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dom_button = (Button) findViewById(R.id.dom);
dom_button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
try {
doDom(MainActivity.this.getResources().getAssets()
.open("book.xml"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
private void doDom(InputStream inStream) throws Exception {
List<Book> books = new ArrayList<Book>();
DocumentBuilderFactoryfactory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(inStream);
Element root = dom.getDocumentElement();
NodeList item = root.getElementsByTagName("book");
for (int i = 0; i < item.getLength(); i++) {
Book book = new Book();
Element bookNode = (Element) item.item(i);
NodeList childNodes = bookNode.getChildNodes();
for (int j = 0; j < childNodes.getLength(); j++) {
Node node = childNodes.item(j);
if (node.getNodeType() == Node.ELEMENT_NODE) {
Element childnode = (Element) node;
if ("id".equals(childnode.getNodeName())) {
book.setId(childnode.getFirstChild().getNodeValue());
} else if ("name".equals(childnode.getNodeName())) {
book.setName(childnode.getFirstChild().getNodeValue());
} else if ("price".equals(childnode.getNodeName())) {
book.setPrize(childnode.getFirstChild().getNodeValue());
}
}
}
books.add(book);
}
for(Book book:books)
{
System.out.println(book.toString());
}
}
}
还没有评论,来说两句吧...