使用DOM解析XML文档
2024-08-31 04:30:14
简单介绍一下使用DOM解析XML文档,解析XML文件案例:
<?xml version="1.0" encoding="UTF-8"?> -<pet> -<dog id="1"> <姓名>小白</姓名> <健康值>100</健康值> <亲密度>0</亲密度> <年龄>1岁</年龄> </dog> -<dog id="2"> <姓名>黄鼠狼</姓名> <健康值>30</健康值> <亲密度>90</亲密度> <年龄>5岁</年龄> </dog> -<dog id="3"> <姓名>小东</姓名> <健康值>90</健康值> <亲密度>10</亲密度> <年龄>3岁</年龄> </dog> </pet>
使用DOM解析XML文档
import java.io.IOException; 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; /**
* 使用DOM解析XML文档
* @author Administrator
*
*/
public class DomReadXML { /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub //========使用DOM解析XML
//第一步:建立DOM解析工厂对象实例
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try {
//第二步:从DOM解析工厂中获取解析器
DocumentBuilder db = dbf.newDocumentBuilder(); //第三步:解析XML文件;载入XML文件得到Document即DOM树
Document dom = db.parse("file:///D:/Desktop/chapter14/教学演示案例/示例3:使用内部DTD文件/pet2.xml"); //得到所有狗狗节点信息
NodeList nl = dom.getElementsByTagName("dog");
System.out.println(nl.getLength());
//循环取出信息
for (int i = 0; i < nl.getLength(); i++) { //得到每只狗狗节点
Node dog = nl.item(i); //得到狗狗的属性(即ID)
Element el = (Element)dog;
String id = el.getAttribute("id");
System.out.println("ID:"+id); //获取狗狗的子节点信息
for(Node dog_child = dog.getFirstChild();dog_child!=null;dog_child = dog_child.getNextSibling()){ //为了防止打印空格(即#text);需要判断当前对象为Node节点对象
if(dog_child.getNodeType() == Node.ELEMENT_NODE){
String name = dog_child.getNodeName();
String value = dog_child.getFirstChild().getNodeValue();
System.out.println(name+":"+value);
}
} } } catch (ParserConfigurationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SAXException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} } }
最新文章
- [转]实现一个无法被继承的C++类
- 【SQLServer】DBHelper即C#数据库底层封装
- 【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去
- iOS 协同开发出fatal error: file ‘XX-Prefix.pch’ has been modified since the precompiled header was built
- sql2000无法打开1433端口及解决方法
- 解决java访问.netWebService的常见问题
- OpenGL的状态机理解
- maven项目如何引用本地的jar包
- (转)混乱的First、Follow、Firstvt和Lastvt
- Windows7下安装IIS
- Django_ajax
- Scanner输入数字时个位十位百位千位单独取出。
- #pragma常用预处理指令
- mui 从列表进入到详情,再返回,列表页还是进入列表之前的样子,而不刷新页面
- Oracle 11g EM删除重建的方法
- console.time方法与console.timeEnd方法
- myeclipse安装jad反编译插件
- Linux命令之乐--iconv
- UISegmentedControl的基本用法
- js获取日期实例之昨天今天和明天、后天
热门文章
- PAT 1107 Social Clusters
- SCI 计算机 数学相关期刊
- Spring MVC-视图解析器(View Resolverr)-多重解析器(Multiple Resolver)示例(转载实践)
- [RxJS] Throttling vs Debouncing
- linux下oracle11G DG搭建(二):环绕主库搭建操作
- jQuery总结02
- UESTC--1252--24点游戏(dfs)
- codeforces 915D Almost Acyclic Graph 拓扑排序
- Java -JVM:JVM百科
- bzoj3687简单题(dp+bitset优化)