为了账号安全,请及时绑定邮箱和手机立即绑定

节点没有属性的时候,getAttributes()方法再调用for循环是否可行

节点没有属性的时候,getAttributes()方法再调用for循环是否可行

正在回答

3 回答

/**
	 *解析XML文件 
	 */
	public void parserXML(){
		//通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
		try {
//			<至此!已关联需要解析的XML文件>
			Document document = getDocumentBuilder().parse("books2.xml");
			//获取book名节点的所有List列表
			NodeList bookList = document.getElementsByTagName("book");
			//获取book节点的数量,并输出
			System.out.println("book节点的数量:" + bookList.getLength());
			//循环遍历每一个book节点的属性以及子节点
			for(int i = 0 ; i < bookList.getLength() ; i++ ){
				//提示输出正在遍历的第几本书
				System.out.println("**********开始遍历第" + (i + 1) + "本书**********");
				//通过 item(i)方法 获取一个book节点,nodeList的索引值从0开始
				Node book = bookList.item(i);
				//获取book节点的所有属性集合
				NamedNodeMap attrs = book.getAttributes();
				//在不知道book节点有几个属性时使用attrs.getLength()获得长度
				for (int j = 0 ; j < attrs.getLength() ; j++ ){
					Node attr = attrs.item(j);
					System.out.println("booK的属性名:" + attr.getNodeName() + "_____属性值:" + attr.getNodeValue());
				}
				//获取book节点子节点的List集合
				NodeList childNodes = book.getChildNodes();
				//输出book子节点集合的长度
				System.out.println("childNodes:" + childNodes.getLength());
				//遍历book子节点
				for(int k = 0 ; k < childNodes.getLength() ; k ++){
					//获取book子节点
					Node child = childNodes.item(k); 
					//获取book子节点的属性集合
					NamedNodeMap atts = child.getAttributes();
					//遍历该book子节点的属性集合
					for (int j = 0 ; j < atts.getLength() ; j++ ){
						Node attr = atts.item(j);
						//
						System.out.println("子节点的属性名:" + attr.getNodeName() + "_____属性值:" + attr.getNodeValue());
					}
					
					if(child.getNodeType() == Node.ELEMENT_NODE){
						System.out.println(child.getNodeName() + ":  " + child.getTextContent());
					}
				}
				//提示遍历结束
				System.out.println("**********结束遍历第" + (i + 1) + "本书**********");
			}
		} catch (SAXException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}


0 回复 有任何疑惑可以回复我~

没有意义啊

0 回复 有任何疑惑可以回复我~

不太清楚你的问题,可以具体说一下吗?

0 回复 有任何疑惑可以回复我~
#1

800AM 提问者

DOM解析XML文件时,想解析子节点的属性,,,,我贴上code
2016-12-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

节点没有属性的时候,getAttributes()方法再调用for循环是否可行

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信