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

来源:2-2 使用 DOM 解析 XML 文件的属性名和属性值

800AM

2016-12-14 19:55

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

写回答 关注

3回答

  • 800AM
    2016-12-16 09:04:09
    /**
    	 *解析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();
    		}
    		
    	}


  • 高bobo
    2016-12-15 10:59:12

    没有意义啊

  • qq_爱笑的蜗牛_0
    2016-12-15 10:46:40

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

    800AM

    DOM解析XML文件时,想解析子节点的属性,,,,我贴上code

    2016-12-16 09:03:50

    共 1 条回复 >

Java眼中的XML---文件读取

通过Java认识并且创造XML文件,如何应用 Java“解析 XML

83199 学习 · 431 问题

查看课程

相似问题