xml解析(DOM)

来源:互联网 发布:易语言变速齿轮源码 编辑:程序博客网 时间:2024/06/05 16:23
package cn.itcast.other;


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 cn.itcast.domain.Person;
/**
 * 使用Dom解析xml文件
 *
 */
public class DomXMLReader {


public static List<Person> readXML(InputStream inStream) {
List<Person> persons = new ArrayList<Person>();
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
try {
DocumentBuilder builder = factory.newDocumentBuilder();
Document dom = builder.parse(inStream);
Element root = dom.getDocumentElement();
NodeList items = root.getElementsByTagName("person");//查找所有person节点
for (int i = 0; i < items.getLength(); i++) {
Person person = new Person();
//得到第一个person节点
Element personNode = (Element) items.item(i);
//获取person节点的id属性值
person.setId(new Integer(personNode.getAttribute("id")));
//获取person节点下的所有子节点(标签之间的空白节点和name/age元素)
NodeList childsNodes = personNode.getChildNodes();
for (int j = 0; j < childsNodes.getLength(); j++) {
Node node = (Node) childsNodes.item(j);//判断是否为元素类型
if(node.getNodeType() == Node.ELEMENT_NODE){   Element childNode = (Element) node;
                                        //判断是否name元素
   if ("name".equals(childNode.getNodeName())) {
    //获取name元素下Text节点,然后从Text节点获取数据        person.setName(childNode.getFirstChild().getNodeValue());
   } else if ("age".equals(childNode.getNodeName())) {
person.setAge(new Short(childNode.getFirstChild().getNodeValue()));
   }
}
       }
   persons.add(person);
}
inStream.close();
} catch (Exception e) {
e.printStackTrace();
}
return persons;
}

}



package cn.itcast.service;


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 cn.itcast.domain.Person;


/*
 * DOM解析xml
 */
public class DOMPersonService {
public static  List<Person> getPersons(InputStream  is) throws Exception, Exception{//用于获取xml中的数据
List<Person> persons=new ArrayList<Person>();
DocumentBuilderFactory factory= DocumentBuilderFactory.newInstance();
DocumentBuilder builder=factory.newDocumentBuilder();
Document document=builder.parse(is);//一旦调用完成,xml的解析就会完成.以文档树的形式保存
Element element=document.getDocumentElement();//取得根元素
NodeList  personNodes= element.getElementsByTagName("person");//
for (int i = 0; i < personNodes.getLength(); i++) {
Person person=new Person();
Element personElement= (Element) personNodes.item(i);
person.setId( new Integer( personElement.getAttribute("id")));
NodeList personChildds=personElement.getChildNodes();
for (int j = 0; j < personChildds.getLength(); j++) {
if (personChildds.item(j).getNodeType()==Node.ELEMENT_NODE) {//判断当前节点是否为元素类型节点
Element childElement= (Element) personChildds.item(j);
if (childElement.equals("name")) {
//取得第一个子节点
person.setName(childElement.getFirstChild().getNodeValue());
}else if (childElement.equals("age")) {
person.setAge(new Short(childElement.getFirstChild().getNodeValue()));
}
}
}
persons.add(person);
}
return persons;
}
}




<?xml version="1.0" encoding="UTF-8"?>
<persons>
<person id="23">
<name>LiMing</name>
<age>30</age>
</person>
<person id="20">
<name>LiXiangMei</name>
<age>25</age>
</person>
</persons>



原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 取环之前同房了怎么办 做人流后又怀孕怎么办 仓鼠长了个肿瘤怎么办 过敏留下的黑印怎么办 脸上痘痘发炎了怎么办 脸上皮肤红痒怎么办啊 皮肤有一片红痒怎么办 脸过敏期间很干怎么办 怀孕了用了消糜栓怎么办 乳酸杆菌少或无怎么办 怀孕了白带有异味怎么办 怀孕清洁度iv度怎么办 怀孕了下面有异味怎么办 孕妇尿白细胞1是怎么办 药流期间喂奶了怎么办 20多岁卵巢早衰怎么办 3岁儿童肚子胀气怎么办 肚子又胀又痛怎么办 1岁宝宝肚子胀气怎么办 2岁宝宝肚子胀气怎么办 产后腰粗肚子大怎么办 发烧后腹泻拉水怎么办 又吐又拉还发烧怎么办 喝中药恶心想吐怎么办 生完孩子肛门疼怎么办 拉完大便肛门痛怎么办 肚子总是凉凉的怎么办 京东金条风控了怎么办 京东维修没发票怎么办 假牙吞到肚子里怎么办 眼睛一只大一只小怎么办 一个眼睛大一个眼睛小怎么办 电脑上的字模糊怎么办 无忧乐行注销了怎么办 连供墨盒有空气怎么办 30岁突然停经了怎么办 下面很痒怎么办白带多 私处有点痒怎么办洗液 人的下体皮肤痒怎么办 打球手指关节肿了怎么办 婴儿2个月鼻塞怎么办