最近在研究xml解析方式,觉得几种方法都还可以!今天把他记下来与大家分享一下!代码是自己写的!过程中有错误的话!还望指正!
public static void main(String[] arrs){
InputStream inputStream = this.getClass.getClassLoad.getResourceAsStream("context.xml"); //得到inputStream
List<Person> perList = new ArrayList<Person>();
Person person = null;
//得到文档构建器工厂,用来产生文档构建器
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
//通过工厂得到构建器
DocumentBuilder dBuilder = dbf.newDocumentBuilder();
//把inputStream 通过构建器进行解析,得到document对象
Document document =dBuilder.parse(inputStream);
Element element =document.getDocumentElement(); //得到根节点
NodeList childNodeList =element.getElementsByTagName("person"); //得到所有的person 节点对象
for (int i = 0; i < childNodeList.getLength(); i++) {
person = new Person();
//得到单个person 节点对象
Element persoNode =(Element)childNodeList.item(i);
//获取节点属性
person.setId(Integer.valueOf(persoNode.getAttribute("id")));
//得到所有节点下面的所有子节点
for (int j = 0; j < persoNode.getChildNodes().getLength(); j++) {
//得到子节点 并设置值
Node ccElement = persoNode.getChildNodes().item(j);
if (ccElement.getNodeName().equals("name")) {
//得到子节点中的文本
person.setName(ccElement.getFirstChild().getNodeValue());
}
if (ccElement.getNodeName().equals("age")) {
//同上
person.setAge(Integer.valueOf(ccElement.getFirstChild().getNodeValue()));
}
}
perList.add(person);
}
for(Person person:perList){
System.out.println(person.toString());
}
}
/*******************context.xml************************/
<?xml version='1.0' encoding='utf-8'?>
<persons>
<person id='20'>
<name>xx</name>
<age>33</age>
</person>
<person id='30'>
<name>dd</name>
<age>33</age>
</person>
<person id='40'>
<name>aa</name>
<age>33</age>
</person>
</persons>
简单把 !!!!!