加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

XML解析之DOM解析

发布时间:2020-12-16 09:09:51 所属栏目:百科 来源:网络整理
导读:1.DOM解析是一种用于XML文档的对象模型,在DOM中 XML文档被模拟为树状,由于DOM的实现是将XML解析到内存中,这使得解析较大文档的时候会导致效率低下。 DOM解析是先解析整个文档,以供用户提取需要的信息 2.DOM规定整个XML文档是一个文档节点。 每个元素标签
1.DOM解析是一种用于XML文档的对象模型,在DOM中 XML文档被模拟为树状,由于DOM的实现是将XML解析到内存中,这使得解析较大文档的时候会导致效率低下。
DOM解析是先解析整个文档,以供用户提取需要的信息
2.DOM规定整个XML文档是一个文档节点。
每个元素标签是一个元素节电(跟元素,子元素)
包含在每个元素中的文本是一个文本节
每个元素的属性是一个属性节
注释属于注释节点

2.实现解析
package com.example.test;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class DOMForXML {
public static List<Person> domParse(InputStream is) throws ParserConfigurationException,SAXException,IOException{
List<Person> list=new ArrayList<Person>();
//创建DocumentBuilderFactory
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//创建DocumentBuilder
DocumentBuilder db=dbf.newDocumentBuilder();
//创建Document对象
Document document=db.parse(is);
Element root=document.getDocumentElement(); //获取跟元素节点
NodeList nodelist=root.getElementsByTagName("person");//获取跟节点下的子节点集
for(int i=0;i<nodelist.getLength();i++){
Element personElement=(Element) nodelist.item(i);
int id=new Integer(personElement.getAttribute("id"));//获取每个"person"子节点的属性节点的值
Person person=new Person();
person.setId(id);
NodeList childNodeList=personElement.getChildNodes(); //获取"person"下的子元素节点
for(int j=0;j<childNodeList.getLength();j++){
if(childNodeList.item(j).getNodeType()==Node.ELEMENT_NODE){//判断是否是元素节点
if("name".equals(childNodeList.item(j).getNodeName())){//判断元素节点名称
String name=childNodeList.item(j).getFirstChild().getNodeValue();//获取该元素节点的文本节点的值
person.setName(name);
}
if("age".equals(childNodeList.item(j).getNodeName())){
int age=Integer.valueOf(childNodeList.item(j).getFirstChild().getNodeValue());
person.setAge(age);
}
}
}
list.add(person);
}
is.close();
return list;
}
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读