1DOM:Document Object Model (文档对象模型)。
2对于XML应用开发来说,DOM就是一个对象化的XML数据接口,一个与语言无关、与平台无关的标准接口规范
3要严格区分XML文档树中的根结点与根元素结点:根节点(Document)代表的是XML文档本身,是我们解析XML文档的入口,而根元素结点则表示XML文档的根元素,它对应于XML文档的Root。
解析XML文档
方法一:
//Stpe1 :获得Dom工厂解析器 DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance(); //Step2 创建解析器 DocumentBuilder dBuilder=dbf.newDocumentBuilder(); //Step3:解析一个XML文档 获得Document根节点 Document dom=dBuilder.parse(new File("E:\\我的文档\\开发相关\\JAVA视频2\\Java培训视频教程\\4.Java xml培训视频\\Lesson 2 code\\code\\candidate.xml")); NodeList listsList=dom.getElementsByTagName("PERSON"); for(int i=0;i<listsList.getLength();i++) { Element element=(Element) listsList.item(i); String contentString=element.getElementsByTagName("NAME").item(0).getFirstChild().getNodeValue(); System.out.println(contentString); }
4JAXP(Java API for XML Parsing):用于XML解析的Java API。
使用递归解析XML文档
private static void parseElement(Element element) { String tagName = element.getNodeName(); NodeList children = element.getChildNodes(); System.out.print("<" + tagName); //element元素的所有属性所构成的NamedNodeMap对象,需要对其进行判断 NamedNodeMap map = element.getAttributes(); //如果该元素存在属性 if(null != map) { for(int i = 0; i < map.getLength(); i++) { //获得该元素的每一个属性 Attr attr = (Attr)map.item(i); String attrName = attr.getName(); String attrValue = attr.getValue(); System.out.print(" " + attrName + "=\"" + attrValue + "\""); } } System.out.print(">"); for(int i = 0; i < children.getLength(); i++) { Node node = children.item(i); //获得结点的类型 short nodeType = node.getNodeType(); if(nodeType == Node.ELEMENT_NODE) { //是元素,继续递归 parseElement((Element)node); } else if(nodeType == Node.TEXT_NODE) { //递归出口 System.out.print(node.getNodeValue()); } else if(nodeType == Node.COMMENT_NODE) { System.out.print("<!--"); Comment comment = (Comment)node; //注释内容 String data = comment.getData(); System.out.print(data); System.out.print("-->"); } } System.out.print("</" + tagName + ">"); }