简单介绍一下使用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();
} } }

最新文章

  1. [转]实现一个无法被继承的C++类
  2. 【SQLServer】DBHelper即C#数据库底层封装
  3. 【C#】分享一个弹出容器层,像右键菜单那样召即来挥则去
  4. iOS 协同开发出fatal error: file ‘XX-Prefix.pch’ has been modified since the precompiled header was built
  5. sql2000无法打开1433端口及解决方法
  6. 解决java访问.netWebService的常见问题
  7. OpenGL的状态机理解
  8. maven项目如何引用本地的jar包
  9. (转)混乱的First、Follow、Firstvt和Lastvt
  10. Windows7下安装IIS
  11. Django_ajax
  12. Scanner输入数字时个位十位百位千位单独取出。
  13. #pragma常用预处理指令
  14. mui 从列表进入到详情,再返回,列表页还是进入列表之前的样子,而不刷新页面
  15. Oracle 11g EM删除重建的方法
  16. console.time方法与console.timeEnd方法
  17. myeclipse安装jad反编译插件
  18. Linux命令之乐--iconv
  19. UISegmentedControl的基本用法
  20. js获取日期实例之昨天今天和明天、后天

热门文章

  1. PAT 1107 Social Clusters
  2. SCI 计算机 数学相关期刊
  3. Spring MVC-视图解析器(View Resolverr)-多重解析器(Multiple Resolver)示例(转载实践)
  4. [RxJS] Throttling vs Debouncing
  5. linux下oracle11G DG搭建(二):环绕主库搭建操作
  6. jQuery总结02
  7. UESTC--1252--24点游戏(dfs)
  8. codeforces 915D Almost Acyclic Graph 拓扑排序
  9. Java -JVM:JVM百科
  10. bzoj3687简单题(dp+bitset优化)