XMl解析技术

遍历当前的xml文档,包括属性节点的遍历。



package cn.csdn.dom;

import java.io.File;
import java.io.IOException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Attr;
import org.w3c.dom.Document;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;


public class DomTest {

private static Document doc;

static{
/*创建解析器*/
//得到dom解析器工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
//由工厂创建dom解析器对象
try {
DocumentBuilder builder = factory.newDocumentBuilder();
doc = builder.parse(new File("src/BOOK.xml"));
} catch (ParserConfigurationException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}


public static void main(String[] args){
Node node = doc.getElementsByTagName("书籍列表").item(0);
listNodes(node);
}

/*遍历所有的节点操作*/
public static void listNodes(Node node){
System.out.println("节点的名称:"+node.getNodeName()+" 节点的类型:"+node.getNodeType()+" 节点的值:"+node.getNodeValue());
/*首先判断节点是不是元素节点*/
if(node.getNodeType()==Node.ELEMENT_NODE){
if(node.hasAttributes()){
    NamedNodeMap map = node.getAttributes();
    for(int i=0;i<map.getLength();i++){
    Attr attr = (Attr) map.item(i);
    System.out.println("节点名称"+attr.getNodeName()+"节点值"+attr.getNodeValue());
    }
}

if(node.hasChildNodes()){
NodeList nodeList=node.getChildNodes();
for(int i=0;i<nodeList.getLength();i++){
Node nod =nodeList.item(i);
listNodes(nod);
}
}
}
}

}

你可能感兴趣的:(xml)