以下示例比较简单,仅供初学者参考。
生成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>
分享到:
相关推荐
在"XML解析之DOM"这一主题中,我们将深入探讨DOM解析器如何工作,以及如何通过DOM API获取XML文件中的信息。DOM解析器将整个XML文档加载到内存中,形成一个节点树,每个元素、属性、文本等内容都对应一个节点。这种...
rootEle.addComment("这是一个dom4j生成的xml文件"); Element empEle = rootEle.addElement("emp"); empEle.addAttribute("id", "1"); Element nameEle = empEle.addElement("name"); nameEle.setText(...
DOM4J的核心优势之一在于其丰富的接口体系,这些接口定义在`org.dom4j`包内,提供了对XML文档进行读写、查询、修改等操作的能力。 1. **Attribute**: 代表XML中的属性,可用于获取和设置属性值。 2. **Branch**: ...
1. 加载XML文档:首先,需要创建一个DOM解析器实例,然后使用这个解析器加载XML文件。解析器会检查文档的语法合法性,并构建节点树。 2. 创建节点树:解析器将XML文档的每个元素、属性、文本等内容转化为对应的DOM...
DOM的优点在于提供了随机访问和修改文档的能力,但缺点是内存消耗大,不适用于大型XML文件。 在`DomDemo.java`中,通常会有以下步骤: - 导入必要的库:如`javax.xml.parsers.DocumentBuilderFactory`和`org.w3c....
在实践中,DOM解析通常用于XML文件较小或者需要频繁修改XML结构的场合,因为它提供了完整的文档视图,操作起来更直观。而SAX解析常用于需要高效读取大量XML数据且只关心特定部分的情况,例如日志分析、数据流处理等...
DOMParser虽然强大,但解析大型XML文件时可能会消耗大量内存和CPU资源。对于这种情况,可以考虑使用SAX(Simple API for XML)或StAX(Streaming API for XML)等基于事件的解析器,它们不需要一次性加载整个文档到...
要开始解析XML文件,首先需要导入DOM4J的相关包: ```java import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; ``` 接下来,我们将创建...
DOM解析器一次性加载整个XML,因此内存占用较大,适合处理小型或中型XML文件,但操作灵活,代码简洁。 3. PULL解析: PULL解析器(Pull Parser)是Android特有的解析方式,类似于SAX,也是事件驱动的,但它提供了一...
DOM解析器会一次性加载整个XML文档到内存,因此适用于小型XML文件。代码示例: ```java import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; //... Document doc = ...
DOM(Document Object Model)解析是处理XML文件的一种常用方法。DOM解析器将整个XML文档加载到内存中,形成一个树形结构,允许开发者通过节点操作来访问和修改XML内容。本篇文章将深入探讨Android中的DOM解析XML...
1. 加载XML文档:首先,我们需要一个`DocumentBuilderFactory`实例来配置和创建`DocumentBuilder`,然后用`DocumentBuilder`的`parse()`方法加载XML文件。 ```java DocumentBuilderFactory factory = ...
提供的`Java解析xml文件.docx`文档应该包含了详细的步骤和示例代码,帮助你理解和实现上述过程。同时,`xmlparse`可能是包含示例XML文件或与解析相关的Java源码的文件夹,供你参考和实践。 总结,DOM4J为Java开发者...
总结来说,DOM解析适合小规模、需频繁查询的XML文件;PULL解析适用于处理大型XML文件,节省内存;SAX解析则更注重内存效率,适用于流式处理。在实际开发中,开发者应根据项目需求选择合适的XML解析方式。而...
2. **SAX解析**:除了DOM,dom4j还支持SAX(Simple API for XML)解析器,适用于处理大型XML文件,因为它不需要一次性加载整个文档到内存。 3. **XPath支持**:dom4j内置了XPath引擎,可以使用XPath表达式方便地定位...
创建XML文件时,同样利用DOM解析器,但流程相反。首先创建`DocumentBuilderFactory`和`DocumentBuilder`,然后用`newDocument()`方法创建空的`Document`对象。接着,创建一系列的`Element`节点,如"rootnode"、...
- 内存消耗大:对于大型XML文件,DOM可能会消耗大量内存,因为它需要一次性加载整个文档。 - 性能问题:由于需要构建完整的DOM树,解析速度相对较慢。 **2. SAX解析** SAX(Simple API for XML)是一种事件驱动的...