dom解析xml

<?xml version="1.0" encoding="UTF-8"?>
<!-- 外部验证 -->
<!DOCTYPE Students SYSTEM "Students.dtd">
<!--内部验证
<!DOCTYPE Students[
<!ELEMENT Students (student+)>
<!ELEMENT student (name,age,sex)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
]>
-->
<Students>
	<student id="20170625">
		<name>张瑞</name>
		<age>24</age>
		<sex>男</sex>
	</student>
	<student id="20170626">
		<name>胡黎明</name>
		<age>24</age>
		<sex>男</sex>
	</student>
</Students>

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT Students (student+)>
<!ELEMENT student (name,age,sex)>
<!ATTLIST student id CDATA #REQUIRED>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>

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

import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class DomTest {
	public static void main(String[] args) throws Exception{
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		Document document = builder.parse("Students.xml");
		NodeList nodeList = document.getElementsByTagName("Students");
		Node node = nodeList.item(0);
		NodeList childNodes = node.getChildNodes();
		System.out.println(childNodes.getLength());
	}
}

dom解析xml的步骤:

1.新建解析工厂

2.新建解析器

3.解析文件

4.形成dom树

5.获取根节点

6.拿到根节点的所有子节点

dom解析xml时会包括空格,所以上述的结果是5

xml:基于XML树结构     比较耗资源
适用于多次访问XML


for(int i=0;i<childNodes.getLength();i++){
			Node node2 = childNodes.item(i);//获取到子节点
                        //3.代表了空白节点 1.代表实际节点
                       //System.out.println(node2.getNodeType());
			if(node2.getNodeType()==1){
				Element ele = (Element)node2;//拿到含有数据的节点(元素)
				String attribute = ele.getAttribute("id");//拿到属性值
				System.out.println("id----->"+attribute);
				NodeList childNodes2 = node2.getChildNodes();//拿到所有的Student的子节点   age  sex  name
				for(int j=0;j<childNodes2.getLength();j++){
					Node node3 = childNodes2.item(j);//拿到Student的子节点age  sex  name
					if(node3.getNodeType()==1){//去除空白节点
						Element ele2 = (Element)node3;
						String nodeName = ele2.getNodeName();
						String textContent = ele2.getTextContent();
						System.out.println(nodeName+"--->"+textContent);
					}
				}
			}
			System.out.println();
		}



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值