java代码解析xml配置文件

                                                                               java代码解析xml配置文件

 <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 中国[
    <!ELEMENT 中国 (北京,河南*,河北)>
    <!ELEMENT 北京 (海淀)>
    <!ELEMENT 海淀 (上地,中关村,东北旺)>
    <!ELEMENT 河南 (郑州,安阳)>
    <!ELEMENT 郑州 (商丘)>
    <!ELEMENT 河北 (石家庄)>
   
    <!ELEMENT 上地 (#PCDATA)>
    <!ELEMENT 中关村 (#PCDATA)>
    <!ELEMENT 东北旺 (#PCDATA)>
    <!ELEMENT 商丘 (#PCDATA)>
   
    <!ELEMENT 安阳 EMPTY>
    <!ELEMENT 石家庄 EMPTY>
   
   
    <!ATTLIST 商丘 人口 CDATA #IMPLIED>
    <!ATTLIST 安阳 人口 CDATA #IMPLIED>
    <!ATTLIST 石家庄 人口 CDATA #IMPLIED>
   
   
]>

<中国>
 <北京>
  <海淀>
   <上地>上地七街</上地>
   <中关村>鼎好</中关村>
   <东北旺>软件园</东北旺>
  </海淀>
 </北京>
 
 <河南>
  <郑州>
   <商丘 人口="100万">商丘中学</商丘>
  </郑州>

  <安阳 />
 </河南>

 <河北>
  <石家庄 人口="2000万"/>
 </河北>
</中国>


package cn.csdn.dom;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.junit.Test;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Demo03 {

 public void ready() {

 }

 // 遍历所有的xml文档中的内容
 @Test
 public void test1() throws Exception {
  // 第一步:获取DocumentBuilderFactory工厂
  DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
  // 设置去掉空格的方法
  factory.setIgnoringElementContentWhitespace(true);
  // 获取解析器
  DocumentBuilder builder = factory.newDocumentBuilder();
  // 解析xml文档
  Document document = builder.parse(new File("src//dom.xml"));

  //获取根节点对象
  Element root = document.getDocumentElement();
  /*//获取根节点元素名称
  String tagname = root.getTagName();
  System.out.println("根节点的名称是:"+root.getTagName());*/
  
  //调用Node中的getChildNodes()获取根节点的子节点
  NodeList Nlist = root.getChildNodes();
  //遍历该子节点
  display(Nlist);
  
 }
 
 //使用递归遍历个子节点中的子节点
 public void display(NodeList Nlist){
  for (int i = 0; i <Nlist.getLength(); i++) {
   Node node = Nlist.item(i);
   System.out.println(node.getNodeName());
   if(node.hasChildNodes()){//判断该节点是否还有子节点
    NodeList list = node.getChildNodes();
    display(list); //调用方法本身
   }else{
    if(node.getNodeType()==Node.TEXT_NODE){ //判断节点类型
    System.out.println("         "+node.getTextContent());
    }
    //当没有子节点时跳出
    break;
   }
  }
 }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值