dom方法解析xml文件

xml文件放在sdcard中,dom方式解析,然后在textView上展示(针对于标准格式的xml)

TextView textView=(TextView) findViewById(R.id.textView);
List<Person> listPerson=new ArrayList<Person>();

if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
//sdcard路径
String sdcardPath=Environment.getExternalStorageDirectory().getPath();
//找到文件
File personsFile=new File(sdcardPath+"/persons.xml");

if(personsFile.exists()){//文件存在就解析
try {
//得到文件建造工厂
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//得到建造器
DocumentBuilder builder = factory.newDocumentBuilder();

try {
//加载personsFile.xml文件为document文档,来解析
Document document = builder.parse(personsFile);
//得到根节点persons
Element root = document.getDocumentElement();
//得到根节点的所有子节点,也就是两个person和三个空格
NodeList nodes = root.getChildNodes();
//遍历集合,获得每一个子节点
for(int i=0;i<nodes.getLength();i++){
//得到一个节点
Node n = nodes.item(i);
//判断当前节点是不是元素节点
if(n.getNodeType()==Node.ELEMENT_NODE){
Person p=new Person();//创建person对象,收集数据
Element ele=(Element) n;//某一个person节点
String id=ele.getAttribute("id");//person节点的id属性值
p.setId(Integer.parseInt(id));//封装id

//得到当前person的子节点name和age
NodeList colums = ele.getChildNodes();
for(int j=0;j<colums.getLength();j++){
//得到子节点name或age
Node item = colums.item(j);
//判断当前节点是不是元素节点
if(item.getNodeType()==Node.ELEMENT_NODE){
Element element=(Element) item;
//取出文本节点的值
String value=element.getFirstChild().getNodeValue();
if(element.getNodeName().equals("name")){
p.setName(value);
}else if(element.getNodeName().equals("age")){
p.setAge(Integer.parseInt(value));
}
}
}
//一个person处理完,就可以保存person对象了
listPerson.add(p);
}

}
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}else{
Toast.makeText(MainActivity.this, "sdcard不存在", 0).show();
}
textView.setText(listPerson.toString());


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章