`
mingren135
  • 浏览: 72477 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

解析XML的若干方法

 
阅读更多

解析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);
		}
	}

 

  • 大小: 5.7 KB
分享到:
评论

相关推荐

    Javascript解析服务器端XML文件

    本文将深入探讨如何使用JavaScript在服务器端解析XML文件,并将其转化为树形菜单,以供用户交互。 首先,理解XML的基本结构至关重要。XML是一种自描述性的文本格式,通过标签来定义数据结构。例如: ```xml ...

    spring中的BeanFactory解析xml文件

    当我们谈论“Spring中的BeanFactory解析XML文件”时,我们实际上是在讨论如何通过XML配置文件来定义、创建和管理bean。这篇文章将深入探讨BeanFactory的工作原理,以及XML配置文件在其中的作用。 首先,BeanFactory...

    用dom4j解析xml文件

    本篇文章将深入探讨如何使用DOM4J来解析XML文件,以及通过示例代码来展示其基本操作。 首先,我们需要理解DOM4J的工作原理。DOM4J采用的是DOM(Document Object Model)模型,它将整个XML文档加载到内存中形成一棵...

    XMLDOM对象方法手册

    1. **Document对象**:这是整个XML文档的根节点,提供了一些全局方法,如`createNode()`用于创建新的节点,`load()`用于加载XML文件,`save()`用于保存XML文档,以及`parseFromString()`用于从字符串解析XML。...

    xml-commons-resolver-1.1

    《XML Commons Resolver 1.1:解析XML资源的基石》 XML Commons Resolver 1.1 是一个关键的组件,主要用于处理XML文档中的外部实体引用。它是一个轻量级且功能强大的库,允许开发者在处理XML文档时有效地解决和访问...

    基于多核处理器的VTD-XML解析性能优化.pdf

    - **性能评估与比较**:可能通过实验对比了优化前后的性能差异,以及与其他XML解析器的性能对比,验证了优化方法的有效性。 - **应用案例**:可能给出了实际应用中使用优化后的XML解析器的例子,展示了性能提升带来...

    XMLSpy2009 工程例子

    5. **实例解析**:压缩包中的"XMLSpy2009"文件可能包括了各种XML实例文档、XSD文件、XSLT样式表以及SOAP请求和响应,这些都是为了展示XMLSpy2009在不同场景下的使用方法。通过导入这些示例到XMLSpy2009,用户可以...

    SpringBoot返回json和xml的示例代码

    1. User类是数据模型类,通常包含若干个字段,例如id、name等。 2. 使用@XmlRootElement和@XmlElement等JAXB注解来标注类及字段,以便能够将Java对象转换为XML格式输出。 **启动类默认即可,没有做任何调整**: 1. ...

    asp若干例子xml以及其他例子

    这个压缩包“asp若干例子xml以及其他例子”显然包含了多个ASP应用实例,其中包括了XML和UrlReWrite(URL重写)的技术应用。下面将详细阐述这些知识点。 1. ASP基础: ASP是基于VBScript(Visual Basic Script)的,...

    基于XML解析的标准IEEE14节点电网PQ潮流Java程序

    综上所述,这个项目涉及了XML解析技术、标准电力系统模型、Java编程以及电力系统中的PQ潮流计算方法,是理论与实践结合的良好示例。通过学习和理解这个项目,不仅可以掌握基本的XML处理技巧,还能深入理解电力系统的...

    将INI文件转换成XML

    源代码可能用Python、Java、C#等编程语言编写,利用正则表达式或者专门的库函数来解析INI文件,并通过DOM、SAX或XMLWriter等方法生成XML文件。分析这些源代码可以帮助理解转换的具体实现细节,例如如何处理特殊情况...

    xml基础教程课件习题答案源代码

    7. **课件内容**:提供的课件可能包括XML的基本概念讲解、实例演示、解析器的使用方法、XML Schema和DTD的创建以及XPath和XSLT的应用等内容。 8. **习题答案**:习题解答部分可以帮助学习者检验理解程度,可能涵盖...

    中国省市县数据(XML)

    在实际应用中,这些XML数据通常与编程语言如Python、Java、JavaScript等结合,通过解析XML文件,提取所需的信息,进行数据处理、分析或展示。例如,可以利用Python的`ElementTree`库解析XML,获取所有省份、城市和...

    使用XML实现分页显示数据

    例如,在JavaScript中,我们可以使用DOM(Document Object Model)或者jQuery的`.parseXML()`方法来解析XML: ```javascript var xmlData = '&lt;database&gt;...'; // XML字符串 var xmlDoc = $.parseXML(xmlData); var ...

    信息检索大作业-XML搜索

    通过深入研究XML的解析方式与效率,以及采用高效的搜索机制,如时态XML索引机制和混合并行处理方法,可以极大地提高XML文档的处理速度和查询性能。同时,结合XNodeRelation等智能算法,能够进一步提升搜索的精度,为...

    xml.rar_xml写一个网站

    例如,创建一个名为"books"的XML文件,其中包含若干书籍信息: ```python handler = XMLHandler() root = handler.create_xml('books') book1 = handler.add_element(root, 'book') handler.add_element(book1, '...

    教你如何利用XML创建升级程序的好文章

    在程序中,我们需要解析XML文件以获取这些信息。可以使用各种编程语言的XML解析库,如Python的ElementTree、Java的DOM或SAX等。解析后,根据获取的数据执行相应的更新步骤。 四、执行升级流程 1. 检查版本:对比...

    二进制XML存储方案

    二进制XML存储方案BinXML实现方法 BinXML是我个人杜撰出来的名字,不知道是否合适,也不知道是否已存在类似的解决方案。在vcer.net上我将前一段时间的这个BinXML方案贡献出来,希望能够与广大vcer分享。 当时问题的...

    由XML生成treeview节点

    1. **解析XML文件**:使用XML解析库,如.NET框架中的`System.Xml.Linq`库,来加载和解析XML文件。以下是如何使用`XDocument`类加载`example.xml`: ```csharp XDocument doc = XDocument.Load("example.xml"); `...

    C#与XML整合大全

    1. **C#[1].net中如何操作XML(有实例和详解).doc**:这个文档详细讲解了C#中操作XML的基本方法,包括读取XML文件、写入XML文件、解析XML文档、创建XML元素和属性等,通过实例深入浅出地展示了XML操作的步骤和注意...

Global site tag (gtag.js) - Google Analytics