DOM解析XML

public class Test {
public static void main(String[] args) throws Exception {
//1.创建一个DocumentBuilderFactory的对象
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
//创建一个DocumentBuilder的对象
DocumentBuilder db=dbf.newDocumentBuilder();
//通过DocumentBuilder对象的parser方法加载xml文件到当前项目下
Document doc=db.parse("NewFile.xml");
//获取所有man节点的集合
NodeList manss =doc.getElementsByTagName("man");
    //获取这个集合中节点的个数
System.out.println("一共有"+manss.getLength()+"个男人");
//遍历节点
for (int i = 0; i < manss.getLength(); i++) {
//通过item 方法  获取一个man节点
Node man = manss.item(i);
//获取man节点多余的属性 集合   item.getAttributes(); 返回NamedNodeMap集合
NamedNodeMap nnm=man.getAttributes();
System.out.println("第"+(i+1)+"个男人共有"+nnm.getLength()+"个属性");
//遍历
for (int j = 0; j < nnm.getLength(); j++) {
//通过item(index) 方法获取man节点的某一个属性
Node nd=nnm.item(j);
//获取属性名
System.out.println("属性名为:"+nd.getNodeName());
//获取属性值
System.out.println("属性值为:"+nd.getNodeValue());


}
/*
* 这个方法的前提是一件值得man节点有且只有一个id属性
* 将man节点进行强制转换成Element类型

* Element man=(Element)nnm.item(i);
* 通过man.getAttribute("id")方法获取属性值
String attrValue=man.getAttribute("id");
System.out.println("id的属性值为"+attrValue);*/

//--------2---------
//解析man节点的子节点
NodeList child=man.getChildNodes();
//遍历子节点child中每个的节点名和节点值
System.out.println("第"+(i+1)+"个男人有"+child.getLength()+"个子节点");
System.out.println("子节点名为:");
for (int k = 0; k < child.getLength(); k++) {

//输出每个子节点的节点名 包含  text类型的node  element类型的node
//System.out.print(child.item(k).getNodeName()+"  ");

//区分出来

if(child.item(k).getNodeType()==Node.ELEMENT_NODE) {
//获取element类型节点的节点名
System.out.print("第"+(k+1)+"个节点的名:"+child.item(k).getNodeName()+" , ");
//
// System.out.println("第"+(k+1)+"个节点的值:"+child.item(k).getFirstChild().getNodeValue());
System.out.println("第"+(k+1)+"个节点的值:"+child.item(k).getTextContent());
}

}
System.out.println();
}


}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值