节点没有属性的时候,getAttributes()方法再调用for循环是否可行
节点没有属性的时候,getAttributes()方法再调用for循环是否可行
节点没有属性的时候,getAttributes()方法再调用for循环是否可行
2016-12-14
/** *解析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(); } }
举报