详解Java解析XML的四种方法(转载)
发布时间:2020-12-14 06:17:12 所属栏目:Java 来源:网络整理
导读:原文地址:http://developer.51cto.com/art/200903/117512.htm XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知 识与技术细节,需要阅读相关的技术文献,这里面包括的内
原文地址:http://developer.51cto.com/art/200903/117512.htm XML现在已经成为一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便。对于XML本身的语法知 识与技术细节,需要阅读相关的技术文献,这里面包括的内容有DOM(Document Object Model),DTD(Document Type Definition),SAX(Simple API for XML),XSD(Xml Schema Definition),XSLT(Extensible Stylesheet Language Transformations),具体可参阅w3c官方网站文档http://www.w3.org获取更多信息。 XML在不同的语言里解析方式都是一样的,只不过实现的语法不同而已。基本的解析方式有两种,一种叫SAX,另一种叫DOM。SAX是基于事件流的解析,DOM是基于XML文档树结构的解析。假设我们XML的内容和结构如下:
ddviplinux
m
30
?本文使用JAVA语言来实现DOM与SAX的XML文档生成与解析。 首先定义一个操作XML文档的接口XmlDocument 它定义了XML文档的建立与解析的接口。 1.DOM生成和解析XML文档 为 XML 文档的已解析版本定义了一组接口。解析器读入整个文档,然后构建一个驻留内存的树结构,然后代码就可以使用 DOM 接口来操作这个树结构。优点:整个文档树在内存中,便于操作;支持删除、修改、重新排列等多种功能;缺点:将整个文档调入内存(包括无用的节点),浪费时 间和空间;使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
DomDemo DocumentBuilderFactory factory = DocumentBuilder builder = .document = } Element root = .document.createElement("employees" Element employee = .document.createElement("employee" Element name = .document.createElement("name" name.appendChild(.document.createTextNode("丁宏亮" Element sex = .document.createElement("sex" sex.appendChild(.document.createTextNode("m" Element age = .document.createElement("age" age.appendChild(.document.createTextNode("30" TransformerFactory tf = Transformer transformer = DOMSource source = transformer.setOutputProperty(OutputKeys.ENCODING,"gb2312" transformer.setOutputProperty(OutputKeys.INDENT,"yes" PrintWriter pw = PrintWriter( StreamResult result = System.out.println("生成XML文件成功!" } } } } DocumentBuilderFactory dbf = DocumentBuilder db = Document document = NodeList employees = ( i = 0; i < employees.getLength(); i++ Node employee = NodeList employeeInfo = ( j = 0; j < employeeInfo.getLength(); j++ Node node = NodeList employeeMeta = ( k = 0; k < employeeMeta.getLength(); k++ + ":" + |