`

xml文件解析之Dom

    博客分类:
  • xml
阅读更多

以下示例比较简单,仅供初学者参考。

 

生成XML文件,引用DOM包。

import org.w3c.dom.Document;
import org.w3c.dom.Element;

import java.io.File;
import java.io.FileOutputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;


public class XmlWriterDom {
    public static void main(String[] args){
        genXmlFile();
    }
	
    public static void genXmlFile(){
        try{
	//解析器工厂类
	DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
	//解析器
	DocumentBuilder builder = factory.newDocumentBuilder();
	//操作的Document对象
	Document document = builder.newDocument();
	//设置XML的版本
	document.setXmlVersion("1.0");
	//创建根节点
	Element root = document.createElement("MobileNet");
	//将根节点添加到Document对象中
	document.appendChild(root);
		
	/**the first page*/
	//设置第一个page元素到
	Element pageElement = document.createElement("page");
	//设置page节点的name属性
	pageElement.setAttribute("name", "list.jsp");
	/**method*/
	//设置method节点
	Element methodElement = document.createElement("method");
	//给method设置值
	methodElement.setTextContent("get");
	//添加method节点到page节点内
	pageElement.appendChild(methodElement);
	/**display*/
	//设置method节点
	Element displayElement = document.createElement("display");
	//给display设置值
	displayElement.setTextContent("list");
	//添加display节点到page节点内
	pageElement.appendChild(displayElement);
	/**request_param*/
	//设置request_param节点
	Element request_paramElement = document.createElement("request_param");
	//给request_param设置值
	request_paramElement.setTextContent("request_param1|request_param2");
	//添加request_param节点到page节点内
	pageElement.appendChild(request_paramElement);
	//将page段加人根节点内
	 root.appendChild(pageElement);
		 
	 /**the second page*/
	 //设置第二个page元素到
	 pageElement = document.createElement("page");
	 //设置page节点的name属性
	pageElement.setAttribute("name", "content.jsp");
	/**method*/
	//设置method节点
	methodElement = document.createElement("method");
	//给method设置值
	methodElement.setTextContent("post");
	//添加method节点到page节点内
	pageElement.appendChild(methodElement);
	/**display*/
	//设置method节点
	displayElement = document.createElement("display");
	//给display设置值
	displayElement.setTextContent("content");
	//添加display节点到page节点内
	pageElement.appendChild(displayElement);
	/**url_title*/
	//设置url_title节点
	Element url_titleElement = document.createElement("url_title");
			
	//给url_title设置值
	url_titleElement.setTextContent("title,publisher,published_calendar");
			
	//添加url_title节点到page节点内
	pageElement.appendChild(url_titleElement);
	//将page段加人根节点内
	root.appendChild(pageElement);
			
	//开始把Document映射到文件
	TransformerFactory transFactory = TransformerFactory.newInstance();
	Transformer transFormer = transFactory.newTransformer();
	//设置输出结果
	DOMSource domSource = new DOMSource(document);
	//生成xml文件
	File file = new File("d:/test.xml");
	//判断是否存在,如果不存在,则创建
	if(!file.exists()){
                    file.createNewFile();
	}
	//文件输出流
	FileOutputStream out = new FileOutputStream(file);
	//设置输入源
	StreamResult xmlResult = new StreamResult(out);
	//输出xml文件
	transFormer.transform(domSource, xmlResult);
	//测试文件输出的路径
	System.out.println(file.getAbsolutePath());
    }catch(Exception e){
        e.printStackTrace();
    }finally{
}
}
}

 

 test.xml

<?xml version="1.0" encoding="UTF-8"?>
<MobileNet>
    <page name="list.jsp">
        <method>get</method>
        <display>list</display>
        <request_param>request_param1|request_param2</request_param>
    </page>
    <page name="content.jsp">
        <method>post</method>
        <display>content</display>
        <url_title>title,publisher,published_calendar</url_title>
    </page>
</MobileNet>

 

0
0
分享到:
评论

相关推荐

    XML解析之DOM

    在"XML解析之DOM"这一主题中,我们将深入探讨DOM解析器如何工作,以及如何通过DOM API获取XML文件中的信息。DOM解析器将整个XML文档加载到内存中,形成一个节点树,每个元素、属性、文本等内容都对应一个节点。这种...

    XML解析技术DOM4J解析

    rootEle.addComment("这是一个dom4j生成的xml文件"); Element empEle = rootEle.addElement("emp"); empEle.addAttribute("id", "1"); Element nameEle = empEle.addElement("name"); nameEle.setText(...

    dom4j解析xml详解

    DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...

    xml解析之DOM

    1. 加载XML文档:首先,需要创建一个DOM解析器实例,然后使用这个解析器加载XML文件。解析器会检查文档的语法合法性,并构建节点树。 2. 创建节点树:解析器将XML文档的每个元素、属性、文本等内容转化为对应的DOM...

    dom和sax对xml的解析

    DOM的优点在于提供了随机访问和修改文档的能力,但缺点是内存消耗大,不适用于大型XML文件。 在`DomDemo.java`中,通常会有以下步骤: - 导入必要的库:如`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c....

    XML解析实践之DOM解析和SAX解析.rar

    在实践中,DOM解析通常用于XML文件较小或者需要频繁修改XML结构的场合,因为它提供了完整的文档视图,操作起来更直观。而SAX解析常用于需要高效读取大量XML数据且只关心特定部分的情况,例如日志分析、数据流处理等...

    DOMParser解析xml

    DOMParser虽然强大,但解析大型XML文件时可能会消耗大量内存和CPU资源。对于这种情况,可以考虑使用SAX(Simple API for XML)或StAX(Streaming API for XML)等基于事件的解析器,它们不需要一次性加载整个文档到...

    dom4j 解析(读取) xml 节点数据

    要开始解析XML文件,首先需要导入DOM4J的相关包: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; ``` 接下来,我们将创建...

    android xml 的解析 sax dom pull 解析

    DOM解析器一次性加载整个XML,因此内存占用较大,适合处理小型或中型XML文件,但操作灵活,代码简洁。 3. PULL解析: PULL解析器(Pull Parser)是Android特有的解析方式,类似于SAX,也是事件驱动的,但它提供了一...

    XML 文件解析 DOM DOM4j JDOM SAX 和相对路径的写法 ,代码是有注释的

    DOM解析器会一次性加载整个XML文档到内存,因此适用于小型XML文件。代码示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; //... Document doc = ...

    android Dom解析xml文件

    DOM(Document Object Model)解析是处理XML文件的一种常用方法。DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML内容。本篇文章将深入探讨Android中的DOM解析XML...

    DOM_XML.rar_DOM_dom xml_dom xml java_dom解析xml_java解析xml

    1. 加载XML文档:首先,我们需要一个`DocumentBuilderFactory`实例来配置和创建`DocumentBuilder`,然后用`DocumentBuilder`的`parse()`方法加载XML文件。 ```java DocumentBuilderFactory factory = ...

    Java解析xml配置文件,DOM4J解析xml配置文件,提供使用文档和源码下载

    提供的`Java解析xml文件.docx`文档应该包含了详细的步骤和示例代码,帮助你理解和实现上述过程。同时,`xmlparse`可能是包含示例XML文件或与解析相关的Java源码的文件夹,供你参考和实践。 总结,DOM4J为Java开发者...

    Android XML解析(DOM、PULL、SAX三种方式)

    总结来说,DOM解析适合小规模、需频繁查询的XML文件;PULL解析适用于处理大型XML文件,节省内存;SAX解析则更注重内存效率,适用于流式处理。在实际开发中,开发者应根据项目需求选择合适的XML解析方式。而...

    XML文档解析相关工具

    2. **SAX解析**:除了DOM,dom4j还支持SAX(Simple API for XML)解析器,适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 3. **XPath支持**:dom4j内置了XPath引擎,可以使用XPath表达式方便地定位...

    JDK自带xml解析器dom+sax

    创建XML文件时,同样利用DOM解析器,但流程相反。首先创建`DocumentBuilderFactory`和`DocumentBuilder`,然后用`newDocument()`方法创建空的`Document`对象。接着,创建一系列的`Element`节点,如"rootnode"、...

    xml解析文件的两种方式

    - 内存消耗大:对于大型XML文件,DOM可能会消耗大量内存,因为它需要一次性加载整个文档。 - 性能问题:由于需要构建完整的DOM树,解析速度相对较慢。 **2. SAX解析** SAX(Simple API for XML)是一种事件驱动的...

Global site tag (gtag.js) - Google Analytics