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;
}
}
}
}