- Dom解析
public class MainActivity extends Activity {
private List list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
list = new ArrayList();
// 1 得到dom解析工厂类
DocumentBuilderFactory builderFactory = DocumentBuilderFactory
.newInstance();
try {
// 得到dom方式的解析类
DocumentBuilder documentBuilder = builderFactory
.newDocumentBuilder();
// 通过输入流设置要解析的xml文件,得到Document(文本对象),包含当前xml的信息
Document document = documentBuilder.parse(getAssets().open(
“data.xml”));
// 获得根元素 (根节点)
Element documentElement = document.getDocumentElement();
// 得到根元素下所有的子节点
NodeList childNodes = documentElement.getChildNodes();
System.out.println(childNodes.getLength() + “元素”);// 遍历出每一个根元素下的子节点 for (int i = 0; i < childNodes.getLength(); i++) { // Node node = childNodes.item(i); System.out.println("进入"); System.out.println(childNodes.item(i).getNodeName() + "=========类型" + childNodes.item(i).getNodeType()); // 按角标取得相应子节点 Node node = childNodes.item(i); // 判断节点是不是元素 if (node.getNodeType() == Node.ELEMENT_NODE) { // 每一个子节点下的数据,都封装成一个对象 Person person = new Person(); // 把节点转成元素 <person> Element element = (Element) node; // 得到当前元素的属性节点 String id = element.getAttribute("id"); person.setId(Integer.parseInt(id)); // 得到<person>节点的所有子节点 <name>lee</name>和 <age>30</age> NodeList childNodes2 = element.getChildNodes(); for (int j = 0; j < childNodes2.getLength(); j++) { // j=0时,得到 <name>lee</name>,j=1时,得到 <age>30</age> Node node2 = childNodes2.item(j); // 判断节点是不是元素节点 if (node2.getNodeType() == Node.ELEMENT_NODE) { // 把节点转成元素节点 Element element2 = (Element) node2; // 得到标签包含的文本(lee); String nodeValue = element2.getFirstChild() .getNodeValue(); // 如果标签是<name>,取出标签的文本内容,封装到person对象里 if ("name".equals(element2.getNodeName())) { person.setName(nodeValue); // 如果标签是<age>,取出标签的文本内容,封装到person对象里 } else if ("age".equals(element2.getNodeName())) { person.setAge(nodeValue); } } } Log.i("MainActivity", person.toString()); // 把person对象,装的集合里 list.add(person); } } } 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(); }
}
}