解析XML分为dom和sax两种方式,各有一些不同的java实现
一、dom:由W3C定义的接口,将整个XML文档读入内存构建成一个DOM树,再对各个节点进行操作
1)xml解析
@Override public void parseXml(String filename){ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try{ DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(filename); Element root = doc.getDocumentElement(); NodeList rootNodes = root.getChildNodes(); System.out.println("root's length="+ rootNodes.getLength()); iterateNodeList(root,rootNodes); }catch(Exception e){ System.out.println(e); } } private void iterateNodeList(Node node, NodeList nodeList){ System.out.println("=========start:"+node.getNodeName()+"============"); int nodeListLength = nodeList.getLength(); for(int i=0;i<nodeListLength;i++){ Node childNode = nodeList.item(i); logNodeInfo(childNode,false); if(childNode.getNodeType()==Node.ELEMENT_NODE){ NodeList childNodeList = childNode.getChildNodes(); iterateNodeList(childNode,childNodeList); } } System.out.println("=========end:"+node.getNodeName()+"============"); }
原始xml文档如下:
<?xml version="1.0" encoding="UTF-8"?> <house location="USA"> <room type="owner"> <area> <value>35</value> <unit>m2</unit> </area> </room> <room type="child"> <area> <value>25</value> <unit>m2</unit> </area> </room> <room type="guest"> <area> <value>25</value> <unit>m2</unit> </area> </room> </house>
从程序parse后的结果可以看到,node之间是有空的文本节点(Node.TEXT_NODE)分隔的,结构如下:
2)xml修改
public void modifyXml(String filename) { DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); try{ DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(filename); Element root = doc.getDocumentElement(); root.setAttribute("price", "380000$"); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource domSource = new DOMSource(doc); File file = new File("./src/house-modify.xml"); if(file.exists()) file.delete(); file.createNewFile(); FileOutputStream out = new FileOutputStream(file); StreamResult streamResult = new StreamResult(out); transformer.transform(domSource, streamResult); System.out.println("file's absolute path=" + file.getAbsolutePath()); }catch(Exception e){ System.out.println(e); } }
相关推荐
本文将深入探讨如何使用JavaScript在服务器端解析XML文件,并将其转化为树形菜单,以供用户交互。 首先,理解XML的基本结构至关重要。XML是一种自描述性的文本格式,通过标签来定义数据结构。例如: ```xml ...
当我们谈论“Spring中的BeanFactory解析XML文件”时,我们实际上是在讨论如何通过XML配置文件来定义、创建和管理bean。这篇文章将深入探讨BeanFactory的工作原理,以及XML配置文件在其中的作用。 首先,BeanFactory...
本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...
1. **Document对象**:这是整个XML文档的根节点,提供了一些全局方法,如`createNode()`用于创建新的节点,`load()`用于加载XML文件,`save()`用于保存XML文档,以及`parseFromString()`用于从字符串解析XML。...
《XML Commons Resolver 1.1:解析XML资源的基石》 XML Commons Resolver 1.1 是一个关键的组件,主要用于处理XML文档中的外部实体引用。它是一个轻量级且功能强大的库,允许开发者在处理XML文档时有效地解决和访问...
- **性能评估与比较**:可能通过实验对比了优化前后的性能差异,以及与其他XML解析器的性能对比,验证了优化方法的有效性。 - **应用案例**:可能给出了实际应用中使用优化后的XML解析器的例子,展示了性能提升带来...
5. **实例解析**:压缩包中的"XMLSpy2009"文件可能包括了各种XML实例文档、XSD文件、XSLT样式表以及SOAP请求和响应,这些都是为了展示XMLSpy2009在不同场景下的使用方法。通过导入这些示例到XMLSpy2009,用户可以...
1. User类是数据模型类,通常包含若干个字段,例如id、name等。 2. 使用@XmlRootElement和@XmlElement等JAXB注解来标注类及字段,以便能够将Java对象转换为XML格式输出。 **启动类默认即可,没有做任何调整**: 1. ...
这个压缩包“asp若干例子xml以及其他例子”显然包含了多个ASP应用实例,其中包括了XML和UrlReWrite(URL重写)的技术应用。下面将详细阐述这些知识点。 1. ASP基础: ASP是基于VBScript(Visual Basic Script)的,...
综上所述,这个项目涉及了XML解析技术、标准电力系统模型、Java编程以及电力系统中的PQ潮流计算方法,是理论与实践结合的良好示例。通过学习和理解这个项目,不仅可以掌握基本的XML处理技巧,还能深入理解电力系统的...
源代码可能用Python、Java、C#等编程语言编写,利用正则表达式或者专门的库函数来解析INI文件,并通过DOM、SAX或XMLWriter等方法生成XML文件。分析这些源代码可以帮助理解转换的具体实现细节,例如如何处理特殊情况...
7. **课件内容**:提供的课件可能包括XML的基本概念讲解、实例演示、解析器的使用方法、XML Schema和DTD的创建以及XPath和XSLT的应用等内容。 8. **习题答案**:习题解答部分可以帮助学习者检验理解程度,可能涵盖...
在实际应用中,这些XML数据通常与编程语言如Python、Java、JavaScript等结合,通过解析XML文件,提取所需的信息,进行数据处理、分析或展示。例如,可以利用Python的`ElementTree`库解析XML,获取所有省份、城市和...
例如,在JavaScript中,我们可以使用DOM(Document Object Model)或者jQuery的`.parseXML()`方法来解析XML: ```javascript var xmlData = '<database>...'; // XML字符串 var xmlDoc = $.parseXML(xmlData); var ...
通过深入研究XML的解析方式与效率,以及采用高效的搜索机制,如时态XML索引机制和混合并行处理方法,可以极大地提高XML文档的处理速度和查询性能。同时,结合XNodeRelation等智能算法,能够进一步提升搜索的精度,为...
例如,创建一个名为"books"的XML文件,其中包含若干书籍信息: ```python handler = XMLHandler() root = handler.create_xml('books') book1 = handler.add_element(root, 'book') handler.add_element(book1, '...
在程序中,我们需要解析XML文件以获取这些信息。可以使用各种编程语言的XML解析库,如Python的ElementTree、Java的DOM或SAX等。解析后,根据获取的数据执行相应的更新步骤。 四、执行升级流程 1. 检查版本:对比...
二进制XML存储方案BinXML实现方法 BinXML是我个人杜撰出来的名字,不知道是否合适,也不知道是否已存在类似的解决方案。在vcer.net上我将前一段时间的这个BinXML方案贡献出来,希望能够与广大vcer分享。 当时问题的...
1. **解析XML文件**:使用XML解析库,如.NET框架中的`System.Xml.Linq`库,来加载和解析XML文件。以下是如何使用`XDocument`类加载`example.xml`: ```csharp XDocument doc = XDocument.Load("example.xml"); `...
1. **C#[1].net中如何操作XML(有实例和详解).doc**:这个文档详细讲解了C#中操作XML的基本方法,包括读取XML文件、写入XML文件、解析XML文档、创建XML元素和属性等,通过实例深入浅出地展示了XML操作的步骤和注意...