java解析XML
发布日期:2021-08-23 22:52:25 浏览次数:1 分类:技术文章

本文共 4987 字,大约阅读时间需要 16 分钟。

XMl (eXtensible Markup Language)可扩展标记语言 属于数据存储语言 XML的特点: 可以在任何应用程序中读取数据 极其简单 简化数据共享和数据传输 XML和HTML的区别:HTML 旨在显示信息,而 XML 旨在传输信息。XML要求所有的标记都要成双成对出现,并区分大小写,而HTML标记不区分大小写,

(DOM解析方式)

需要在工程中导入dom4j.jar包 dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点, 链接:https://pan.baidu.com/s/1c2pTmd6 密码:u6oy

org.dom4j.io提供了两个类:SAXReader和DOMReader,前者从一个现有的w3c DOM树构建dom4j树,而SAXReader则使用SAX解析器,从不同的输入源构建dom4j树。

SAXReader方式: 解析步骤:

1):创建SAXReader对象(需要导包org.dom4j.io.SAXReader)SAXReader reader = new SAXReader();2):读取整个XML文件结构(需要包:org.dom4j.Element;)Document doc = reader.read(File file);read()方法可以给一个文件路径 也可以给一个File的对象3)获取XML文件的根节点 (需要包:org.dom4j.Element) Element root = doc.getRootElement(); 4)获取节点下的元素 List
childList =root.elements(); 获取当前元素指定名称的子元素 root.element(String name) 获取当前元素的名称 root.getName() 获取当前元素的内容 root.getText() root.getTextTrim() 获取当前元素下指定名称的子元素内容 root.elementText(String name) 获取当前元素的值 root.getStringValue();

全部代码如下:

 

import java.io.File;import java.util.List;import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class SAXReaderDemo { public static void main(String[] args) { try { // 创建SAXReader对象 SAXReader reader = new SAXReader(); // 读取XML文件结构 Document doc = reader.read(new File("config/server.xml")); // 获取XML文件根节点 Element root = doc.getRootElement(); // 获取根节点一下的子元素 List
list = root.elements(); for (Element item : list) { if ("MySql".equals(item.getName())) { System.out.println("MySQL数据库"); // 获取MySql下的子元素 List
list1 = item.elements(); // 迭代子节点的元素值 for (Element element : list1) { System.out.println("当前元素是:" + element.getName() + "值是:" + element.getStringValue()); } } else if ("SQLServer".equals(item.getName())) { System.out.println("SQLServer数据库"); // 获取SQLServer下的子元素 List
list1 = item.elements(); // 迭代子节点的元素值 for (Element element : list1) { System.out.println("当前元素是:" + element.getName() + "值是:" + element.getStringValue()); } } } } catch (Exception e) { e.printStackTrace(); } } }

 

 

 

我的项目结构如下:

 

 xml文件如下:

com.mysql.jdbc.Driver
jdbc:mysql://localhost:3306/database?useSSL=true
root
1234
com.microsoft.sqlserver.jdbc.SQLServerDriver
jdbc:sqlserver://localhost:1433;DatabaseName=database
sa
1234

用java生成xml文件

1)创建Document对象 通过DocumentHelper的createdocument()方法来获取document对象(需要导包:org.dom4j.Document;org.dom4j.DocumentHelper)Document doc = DocumentHelper.createDocument();2)创建根节点 注意 XML文件的根节点只能有一个(需要导包:org.dom4j.Element)Element root = doc.addElement(String name);3)添加子节点 返回的是当前节点对象 Element child = root.addElement(String name); 4)后面可以继续添加节点 也可以添加子节点下的子节点 child.addElement(String name); 添加节点 child.addText(String name); 添加节点中的内容 完善DOM结构后 就可以把Document对象写入xml文件中 1)创建XMLWriter 流对象 XMLWriter writer=new XMLWriter(); 2)为XMLWriter设定低级输出流 FileOutputStream fos=new FileOutputStream("config/new.xml"); writer.setOutputStream(fos); 3)将document对象写入xml文件中 writer.write(doc); 4)最后关闭XMLWriter流对象 writer.close();

具体代码如下:

 

import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException; import java.io.UnsupportedEncodingException; import org.dom4j.Document; import org.dom4j.DocumentHelper; import org.dom4j.Element; import org.dom4j.io.XMLWriter; public class createXML { public static void main(String[] args) { //创建document对象 Document doc = DocumentHelper.createDocument(); //创建根节点 Element root = doc.addElement("server"); //在根节点上创建两个子节点 Element child1 = root.addElement("MySql"); Element child2 = root.addElement("SQLServer"); //创建第一个子节点下的节点 Element child1_driver = child1.addElement("driver"); child1_driver.addText("com.mysql.jdbc.Driver"); Element child1_url = child1.addElement("url"); child1_url.addText("jdbc:mysql://localhost:3306/database?useSSL=true"); Element child1_user = child1.addElement("user"); child1_user.addText("root"); Element child1_pwd = child1.addElement("pwd"); child1_pwd.addText("1234"); //创建第二个子节点下的节点 Element child2_driver = child2.addElement("driver"); child2_driver.addText("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Element child2_url = child2.addElement("url"); child2_url.addText("jdbc:sqlserver://localhost:1433;DatabaseName=database"); Element child2_user = child2.addElement("user"); child2_user.addText("sa"); Element child2_pwd = child2.addElement("pwd"); child2_pwd.addText("1234"); try { //创建XMLWriter 流对象 XMLWriter writer=new XMLWriter(); //注:XMLWriter writer=new XMLWriter(OutputStream os);,可省略第二步 //为XMLWriter设定低级输出流 FileOutputStream fos=new FileOutputStream("config/new.xml"); writer.setOutputStream(fos); //将document对象写入xml文件中 writer.write(doc); //最后关闭XMLWriter流对象 writer.close(); } catch (Exception e) { e.printStackTrace(); } } }

 

运行代码后刷新config  发现new.xml出现了...

转载地址:https://blog.csdn.net/weixin_33804582/article/details/86020814 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:[React] Extend styles with styled-components in React
下一篇:centos6.5下修改文件夹权限和用户名用户组

发表评论

最新留言

很好
[***.229.124.182]2024年02月29日 05时22分59秒