XML 解析详解
发布时间:2020-12-16 02:15:18 所属栏目:百科 来源:网络整理
导读:XML DOM解析 import java.io.InputStream;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;publ
XML DOM解析import java.io.InputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class DomNote { //DOM 解析XML 文件 //拷贝后如果没有值,请修改程序中节点名称 public static void main(String[] args) { try { // 1.创建解析器工厂对象 DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); // DocumentBuilderFactory 使应用程序能够从 XML 文档获取生成 DOM 对象树的解析器。 // DocumentBuilderFactory.newInstance 获取 DocumentBuilderFactory的新实例。 // 2.由解析器工厂对象创建解析器对象 DocumentBuilder db = dbf.newDocumentBuilder(); // DocumentBuilder 定义 API, 使其从 XML 文档获取 DOM 文档实例。使用此类,应用程序员可以从 XML // 获取一个 Document。 // 获取此类的实例之后,将可以从各种输入源解析 XML // newDocumentBuilder 使用当前配置的参数创建一个新的 DocumentBuilder 实例。 // 读取xml文件的输入流 InputStream in = DomNote.class.getClassLoader().getResourceAsStream( "dog.xml"); /* * InputStream : 此抽象类是表示字节输入流的所有类的超类。 需要定义 InputStream * 的子类的应用程序必须始终提供返回下一个输入字节的方法。 * * getClassLoader() : 类加载器 getResourceAsStream 返回读取指定资源的输入流。 参数: * name - 资源名称 返回:用于读取资源的输入流,如果无法找到资源,则返回 null */ // 3.由解析器对象对指定XML文件进行解析,构建相应DOM树,创建Document对象 Document doc = db.parse(in); /* * Document 接口表示整个 HTML 或 XML文档。从概念上讲,它是文档树的根,并提供对文档数据的基本访问。 * 因为元素、文本节点、注释、处理指令等不能存在于 Document 的上下文之外,所以 * Document接口还包含所需的创建这些对象的工厂方法。 所创建的 Node 对象具有 ownerDocument 属性,该属性将 * Node对象与创建这些对象时的上下文所属的 Document 关联起来。 * * parse(in): 将给定输入源的内容解析为一个 XML 文档,并且返回一个新的 DOM Document 对象。 */ // 获取dog节点集合 NodeList petList = doc.getElementsByTagName("dog"); // NodeList 接口提供对节点的有序集合的抽象,没有定义或约束如何实现此集合。DOM 中的 NodeList 对象是活动的 // getElementsByTagName 按文档顺序返回包含在文档中且具有给定标记名称的所有 Element 的 NodeList for (int j = 0; j < petList.getLength(); j++) { Node dog = petList.item(j); // 返回petlist中第j个项 // 读取id属性 Element e = (Element) dog; /* * Element对象 代表XML文档中的标签元素 继承自Node对象,是Node最主要的子对象 * * Element对象的方法: getAttribute(String):返回标签中给定属性名称的属性的值 * getElementsByTagName(String):返回具有给定标记名称的所有后代 Elements 的 * NodeList */ // 获得id的值 String id = e.getAttribute("id"); System.out.println("id:" + id); //获得dog字节点集合 NodeList clist = dog.getChildNodes(); for (int i = 0; i < clist.getLength(); i++) { Node n = clist.item(i); if (n.getNodeType() == 1)// 元素节点 { System.out.println(n.getNodeName() + ": " + n.getFirstChild().getNodeValue()); } } System.out.println(); } } catch (Exception e) { e.printStackTrace(); } } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |