List<Person> pers=new ArrayList<Person>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
//dom:支持所有语言的解析方式
public void getxmlData(View v){
/**
* 1. 获得xml文档:
* 2. 得到文档下的根元素;
* 3. 获得根元素下所有子元素;
*/
try {
//1 获得 构造document对象的工厂
DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document doc=builder.parse(getAssets().open("data.xml"));
//获得根元素 <persons>
Element element = doc.getDocumentElement();
//获得 <persons> 下直接子节点
NodeList childNodes = element.getChildNodes();
int length = childNodes.getLength();
Toast.makeText(this, "元素个数:"+length, 0).show();
//childNodes 底层是集合
for(int i=0;i<childNodes.getLength();i++){
Node item = childNodes.item(i);
//判断item是不是 元素 <person>
if(item.getNodeType()==Node.ELEMENT_NODE){
Person p=new Person(); //创建java没有属性值的对象
//<person id=1 />
Element e=(Element) item; //把父类
String id = e.getAttribute("id");
p.setId(Integer.parseInt(id.trim())); //把读取的id的值去掉空格转为int类型
Log.d("TAG", "id:+++++++"+id);
//获取<person>下的 子干
NodeList nameages = e.getChildNodes(); //e=<person>--getChildNodes--> <name> <age> ....
//如果<person>下没有空白 --->for循环2次 分别 <name><age>
for(int j=0;j<nameages.getLength();j++){
Node node = nameages.item(j); //<name> <age> ....
if(node.getNodeType()==Node.ELEMENT_NODE){ //过滤空白后---->第一次进入if <name>
Element childe= (Element) node;//node---><name>
Node child = childe.getFirstChild() ;//取name 下的值 <name>李四</name>
String value = child.getNodeValue().trim();
if(node.getNodeName().equals("name")){
p.setName(value);
}else if(node.getNodeName().equals("age")){
p.setAge(Integer.parseInt(value));
}
}
}
pers.add(p);
}
}
Log.d("TAG", "length:+++++++"+pers);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
public class Person {
private int id;
private String name;
private int age;
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Person(int id, String name, int age) {
super();
this.id = id;
this.name = name;
this.age = age;
}
public Person() {
super();
}
@Override
public String toString() {
return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}