XML解析

package LX1;

import org.w3c.dom.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

public class Test {
	public static void main(String[] args) {
		DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();//得到DOM解析器的工厂实例
		try {
			DocumentBuilder db=dbf.newDocumentBuilder();			//从DOM工厂获得DOM解析器
			Document doc=db.parse("D:\\my\\aaa.xml");				//解析XML文档,得到一个Document对象,即DOM树
			NodeList list=doc.getElementsByTagName("Brand"); 		//list对象包括全部"Brand"标签
			for(int i=0;i<list.getLength();i++) {					//遍历list对象
				Node brand= list.item(i);							//获得第i个Brand元素信息
				System.out.println(brand.getNodeName());			//输出全部无素
				Element el=(Element)brand;							//把brand转换成Element类型才能取属性的值
				System.out.println(el.getAttribute("name"));		//输出Brand标签的name属性的值
			}
			NodeList list1=doc.getElementsByTagName("Type");		//list1对象包括全部"Type"标签
			for	(int i=0;i<list1.getLength();i++) {					//遍历list1对象
				Node type=list1.item(i);							//获得第i个Brand元素信息
				System.out.println(type.getNodeName());				//输出i无素
				Element e2=(Element)type;							//把Type转换成Element类型才能取属性的值
				System.out.println(e2.getAttribute("name"));		//输出Type标签的name属性的值
			}
			Element element=doc.getDocumentElement();				//获得根节点的对象
			System.out.println(element.getNodeName());				//输出根节点
			System.out.println(element.getAttribute("b"));			//输出根节点属性b的值
			System.out.println(element.getAttribute("a"));			//输出根节点属性a的值
			NodeList lis= element.getChildNodes();					//获得根节点的所有子节点赋给lis
			for(int i=0;i<lis.getLength();i++) {					//遍历
				Node no1=lis.item(i);								//获得第i个元素信息
				if(no1.getNodeType()==no1.ELEMENT_NODE) {			//判断是否为想要的元素,不是空值
					System.out.println(no1.getNodeName());			//输出根节点所有子节点
					Element e3=(Element)no1;						//转换成Element类型才能取属性的值
					System.out.println(e3.getAttribute("name"));	//输出子节点的name属性的值
				}
				NodeList li= no1.getChildNodes();					//获得lis节点的所有子节点赋给li
				for	(int j=0;j<li.getLength();j++) {				//遍历
					Node no2= li.item(j);							//获得第j个元素信息
					if(no2.getNodeType()==no2.ELEMENT_NODE) {		//判断是否为想要的元素,不是空值
					System.out.println(no2.getNodeName());			//输出li节点所有子节点
					Element e4=(Element)no2;						//转换成Element类型才能取属性的值
					System.out.println(e4.getAttribute("name"));	//输出子节点的name属性的值
					}
				}
			}
			NodeList noli=doc.getElementsByTagName("Type");			//全部"Type"标签
			Element elem=(Element) noli.item(0);					//转换类型
			String put=elem.getFirstChild().getNodeValue();			//返回Type第一个子节点的值
			if(elem.getNodeType()==elem.ELEMENT_NODE) {				
				System.out.println( put);							//输出
			}
		} catch (Exception e) {
//			 TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
}

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值