public class DOM4JTest {
/** */
/** */
/** */
/**
* DOM4J读写XML示例
*
* @param args
* @throws Exception
*/
public static void main(String[] args) {
try {
XMLWriter writer = null;// 声明写XML的对象
SAXReader reader = new SAXReader();
OutputFormat format = OutputFormat.createPrettyPrint();
format.setEncoding("GBK");// 设置XML文件的编码格式
String filePath = "d:\\student.xml";
File file = new File(filePath);
if (file.exists()) {
Document document = reader.read(file);// 读取XML文件
Element root = document.getRootElement();// 得到根节点
boolean bl = false;
for (Iterator i = root.elementIterator("学生"); i.hasNext();) {
Element student = (Element) i.next();
if (student.attributeValue("sid").equals("001")) {
// 修改学生sid=001的学生信息
student.selectSingleNode("姓名").setText("王五");
student.selectSingleNode("年龄").setText("25");
writer = new XMLWriter(new FileWriter(filePath), format);
writer.write(document);
writer.close();
bl = true;
break;
}
}
if (bl) {
// 添加一个学生信息
Element student = root.addElement("学生");
student.addAttribute("sid", "100");
Element sid = student.addElement("编号");
sid.setText("100");
Element name = student.addElement("姓名");
name.setText("嘎嘎");
Element sex = student.addElement("性别");
sex.setText("男");
Element age = student.addElement("年龄");
age.setText("21");
writer = new XMLWriter(new FileWriter(filePath), format);
writer.write(document);
writer.close();
}
} else {
// 新建student.xml文件并新增内容
Document _document = DocumentHelper.createDocument();
Element _root = _document.addElement("学生信息");
Element _student = _root.addElement("学生");
_student.addAttribute("sid", "001");
Element _id = _student.addElement("编号");
_id.setText("001");
Element _name = _student.addElement("姓名");
_name.setText("灰机");
Element _age = _student.addElement("年龄");
_age.setText("18");
writer = new XMLWriter(new FileWriter(file), format);
writer.write(_document);
writer.close();
}
System.out.println("操作结束! ");
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果应该是这样:
循环解析节点:
try {
Document authtmp = DocumentHelper.parseText(xml);
List<Element> list = authtmp.selectNodes("//sms/node");
for (int j = 0; j < list.size(); j++) {
Element node = (Element) list.get(j);
nodeByNodes(node);
}
} catch (Exception e) {
e.printStackTrace();
}
}
private void nodeByNodes(Element node) {
if (node.element("node") != null) {
String id = node.attributeValue("id");
String name = node.attributeValue("name");
System.out.print(id + "-------");
System.out.println(name);
for (Iterator i = node.elementIterator("node"); i.hasNext();) {
Element newNode = (Element) i.next();
nodeByNodes(newNode);
}
} else {
String id = node.attributeValue("id");
String name = node.attributeValue("name");
System.out.print(id + "-------");
System.out.println(name);
}
}
其次DOM4J的解释
一.Document对象相关
1.读取XML文件,获得document对象.
Document document = reader.read(new File("input.xml"));
2.解析XML形式的文本,得到document对象.
Document document = DocumentHelper.parseText(text);
3.主动创建document对象.
Element root = document.addElement("members");// 创建根节点
二.节点相关
1.获取文档的根节点.
2.取得某节点的单个子节点.
3.取得节点的文字
也可以用:
这个是取得根节点下的name字节点的文字.
4.取得某节点下名为"member"的所有字节点并进行遍历.
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element elm = (Element) it.next();
// do something
}
5.对某节点下的所有子节点进行遍历.
Element element = (Element) it.next();
// do something
}
6.在某节点下添加子节点.
7.设置节点文字.
8.删除某节点.
9.添加一个CDATA节点.
contentElm.addCDATA(diary.getContent());
contentElm.getText(); // 特别说明:获取节点的CDATA值与获取节点的值是一个方法
contentElm.clearContent(); //清除节点中的内容,CDATA亦可
三.属性相关.
1.取得某节点下的某属性
Attribute attribute=root.attribute("size");// 属性名name
2.取得属性的文字
也可以用:
这个是取得根节点下name字节点的属性firstname的值.
3.遍历某节点的所有属性
for(Iterator it=root.attributeIterator();it.hasNext();){
Attribute attribute = (Attribute) it.next();
String text=attribute.getText();
System.out.println(text);
}
4.设置某节点的属性和文字.
5.设置属性的文字
attribute.setText("sitinspring");
6.删除某属性
root.remove(attribute);
四.将文档写入XML文件.
1.文档中全为英文,不设置编码,直接写入的形式.
writer.write(document);
writer.close();
2.文档中含有中文,设置编码格式写入的形式.
format.setEncoding("GBK"); // 指定XML编码
XMLWriter writer =new XMLWriter(new FileWriter("output.xml"),format);
writer.write(document);
writer.close();
五.字符串与XML的转换
1.将字符串转化为XML
Document document = DocumentHelper.parseText(text);
2.将文档或节点的XML转化为字符串.
Document document = reader.read(new File("input.xml"));
Element root=document.getRootElement();
String docXmlText=document.asXML();
String rootXmlText=root.asXML();
Element memberElm=root.element("member");
String memberXmlText=memberElm.asXML();
相关推荐
在IT领域,C#是一种广泛使用的编程语言,尤其在开发Windows桌面应用、Web应用以及游戏等方面。本项目涉及的核心技术是“读取XML文件”和“写入Excel表格”。XML(Extensible Markup Language)是一种用于存储和传输...
2. 处理MultipartFile:使用Controller方法接收MultipartFile对象,通过InputStream读取文件内容,然后写入目标位置。 3. 断点续传:保存每个文件块的元数据(如上传时间、文件名、块序号、内容),当上传中断时,...
总结来说,这个实例涵盖了ASP.NET中处理XML文件和数据库的基本操作,包括读取XML、写入数据库、从数据库检索数据以及更新XML。这些技能对于开发任何涉及数据存储和交换的ASP.NET应用程序都是至关重要的。通过熟练...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web服务和数据交换等领域。DOM4J是Java中一个非常优秀的XML处理库,它提供了丰富的API,使得操作XML文件变得简单而高效...
XML(eXtensible Markup Language)是一种用于存储和交换数据的标记语言,广泛应用于软件开发、数据存储和网络通信等领域。Matlab作为一个强大的数值计算和数据分析环境,也提供了与XML交互的功能,这主要通过XML ...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web服务和数据交换等领域。在Java中,处理XML文件主要有四种方式:DOM(Document Object Model)、SAX(Simple API for...
**XML写入操作** 使用Java的DOM API写入XML,可以分为以下步骤: 1. 创建`DocumentBuilderFactory`实例。 2. 使用工厂创建`DocumentBuilder`。 3. 通过`DocumentBuilder`创建一个空的`Document`对象。 4. 创建所需...
总结来说,本示例展示了如何利用C语言的xml2库读取和解析XML文件,特别是针对Servlet应用的web.xml配置文件。理解并掌握这些知识对于进行XML相关的C编程至关重要,它能帮助开发者有效地处理各种结构化的数据存储和...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,广泛应用于软件开发、Web服务和数据交换等领域。MFC(Microsoft Foundation Classes)是微软提供的一个C++库,用于构建Windows应用程序。在...
在IT行业中,XML(eXtensible Markup Language)是一种用于存储和传输数据的标准化格式,广泛应用在各种领域,如Web服务、配置文件、数据交换等。C++作为一门强大的编程语言,提供了多种库来处理XML文件,其中之一...
了解并熟练使用这些API,对于Java开发者来说至关重要,因为它们可以帮助我们有效地读取、写入、验证和处理XML数据。在处理XML问题时,熟悉这些基本概念和API可以帮助快速定位和解决问题,提高开发效率。
总结起来,XML Web服务开发涉及了从基础XML语法到高级的分布式系统概念,如.NET Remoting和服务描述。开发者需要理解和掌握XML的结构和语法规则,以及如何在.NET环境中使用XML进行数据处理和Web服务的构建。同时,...
总的来说,理解并熟练掌握这些ASP.NET中的XML处理类,对于开发高效、灵活的Web应用程序至关重要。无论是从XML文件中提取数据,还是向XML文件写入数据,都有相应的最佳实践和策略可供选择。通过不断实践和学习,...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标准格式,特别是在软件开发和Web应用程序中广泛应用。然而,XML文件在处理中文字符时经常会出现乱码问题,这主要是由于编码不一致或编码声明错误导致...
4. JSP和XML的整合:如何在JSP页面中读取和写入XML数据,以及使用XPath和XSLT处理XML数据。 5. Ajax技术:如何使用XMLHttpRequest对象进行异步请求,以及XML数据在Ajax中的应用。 6. 安全和性能优化:讨论如何避免...
StAX则提供了一种流式处理XML的方式,允许开发者按需读取或写入XML元素,更高效且节省内存。 在xml-apis-2.0.2.jar 包中,"org"目录可能包含了与XML处理相关的组织结构包,比如解析器实现和相关接口。"META-INF...
XML(eXtensible Markup Language)是一种用于存储和传输数据的标记语言,它以其结构化、自解释性和可扩展性而被广泛应用于Web开发中。本教程将深入讲解如何利用XML将数据写入网页,从而减轻数据库的负担,提高网站...
例如,用户上传XML文件,服务器端的C#代码读取文件,处理数据,然后写入数据库,或者返回修改后的XML结果。为了提高性能和安全性,应该始终确保正确处理XML解析错误,并防止XML注入攻击。 在提供的压缩包文件中,...
XML文件可以直接被程序读取和写入,无需中间数据库系统。 3. 配置文件:许多应用程序和框架使用XML作为配置文件,因为它提供了清晰的结构和易于理解的语法。 4. 文档表示:XML也被用于创建结构化的电子文档,如SVG...
在现代Web应用开发中,数据库性能往往是制约应用性能的关键因素之一。为了提高数据库系统的整体性能,一种常见的做法是实施读写分离策略。本文将详细介绍如何构建一个高性能的Web应用,并通过MySQL的读写分离来实现...