`

JDom解析XML

    博客分类:
  • XML
 
阅读更多
XML文件:

<?xml version = '1.0'?>
<DataSource>
<param database="mysql" version="5.0">
<driver>com.mysql.jdbc.Driver</driver>
<url>jdbc:mysql://localhost:3306/j1101</url>
<user>root</user>
<password>root</password>
</param>

<param database="Oracle" version="10G">
<driver>oracle.jdbc.driver.OracleDriver</driver>
<url>jdbc:oracle:thin:@127.0.0.1:1521:orcl</url>
<user>test</user>
<password>test</password>
</param>

</DataSource>




JDom解析scr目录下data-sources.xml文件:public class JdomDemo {
// 解析
public void parse() {
// 1.构建SAXBuilder对象
SAXBuilder builder = new SAXBuilder();
try {
// 2.获取文档对象
Document document = builder.build("data-sources.xml");
// 3.获取根节点,获取根节点
org.jdom.Element root = document.getRootElement();
System.out.println("根节点:" + root.getName());// 根节点的名字
// 3.获取根节点下的所有的子节点
List<Element> childList = root.getChildren();
for (Element e : childList) {
List<Attribute> attritues = e.getAttributes(); // 当前元素的属性的集合
for (Attribute a : attritues) {// 遍历Attribute(属性)的集合
System.out.println(a.getName() + "\t " + a.getValue());
}
// 查找节点值
List<Element> c = e.getChildren();// 将param元素下的子元素保存进集合中
for (Element valueChild : c) { // 遍历子元素集合、

System.out.println(valueChild.getName() + "===="
+ valueChild.getValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

// 根据元素名字来解析
public void parse2() {
// 1.构建SAXBuilder对象
SAXBuilder builder = new SAXBuilder();
try {
// 2.获取文档对象
Document document = builder.build("data-sources.xml");
// 3.获取根节点,获取根节点
org.jdom.Element root = document.getRootElement();
System.out.println("根节点:" + root.getName());// 根节点的名字
// 假设我们已经知道XML文档的内容 的情况下:
List<Element> childList = root.getChildren("param");
for (Element child : childList) {
String database = child.getAttribute("database").getValue();
String version = child.getAttribute("version").getValue();
String driver = child.getChildTextTrim("driver");
String url = child.getChildTextTrim("url");
String user = child.getChildTextTrim("user");
String password = child.getChildTextTrim("password");
System.out.println("database-->" + database);
System.out.println("version-->" + version);
System.out.println("driver-->" + driver);
System.out.println("url-->" + url);
System.out.println("user-->" + user);
System.out.println("password-->" + password);
}
} catch (Exception e) {
e.printStackTrace();
}
}

public void parseMenu() {

// 1.构建SAXBuilder对象
SAXBuilder builder = new SAXBuilder();
try {
// 2.获取文档对象
Document document = builder.build("menu.xml");
// 3.获取根节点,获取根节点
org.jdom.Element root = document.getRootElement();
System.out.println("根节点:" + root.getName());// 根节点的名字
// 3.获取根节点下的所有的子节点
List<Element> childList = root.getChildren();
for (Element e : childList) {
List<Attribute> attritues = e.getAttributes(); // 当前元素的属性的集合
for (Attribute a : attritues) {// 遍历Attribute(属性)的集合
System.out.println(a.getName() + "\t " + a.getValue());
}
// 查找节点值
List<Element> c = e.getChildren();// 将param元素下的子元素保存进集合中
for (Element valueChild : c) { // 遍历子元素集合、
List<Attribute> childAttritues = valueChild.getAttributes(); // 当前元素的属性的集合
for (Attribute a : childAttritues) {// 遍历Attribute(属性)的集合
System.out.println(a.getName() + "\t " + a.getValue());
}
System.out.println(valueChild.getName() + "===="
+ valueChild.getValue());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}

/*
* jdom书写XML文档
*/
public void addXML() {
// 1.创建根节点 root element
Element root = new Element("DataSource");
// 传递根元素创建基于根元素的文档对象
Document document = new Document(root); // <DataSource>
// 2.创建子节点,根据传递进去的名字创建一个这样的元素
Element paramNode = new Element("param"); // <param>
// 设置属性 接要下来就要为这个元素添加属性了 database="mysql" version="5.0">
paramNode.setAttribute("database", "mysql");
paramNode.setAttribute("version", "5.0");
// 3.添加该子节点下的子节点。例如: <driver><url><user><password>这些节点
Element driver = new Element("driver");
driver.setText("com.mysql.jdbc.Driver");
Element url = new Element("url");
url.setText("jdbc:mysql://localhost:3306/j1101");
Element user = new Element("user");
user.setText("root");
Element password = new Element("password");
password.setText("root");
// 4.将这些 <driver><url><user><password>这些节点添加到 param节点中
paramNode.addContent(driver);
paramNode.addContent(url);
paramNode.addContent(user);
paramNode.addContent(password);
// 5.将 param 节点 加入到 root中
root.addContent(paramNode);
// 设置字符集编码 encoding
Format format = Format.getPrettyFormat().setEncoding("gb2312");
XMLOutputter out = new XMLOutputter(format);

try {
out.output(document, new FileOutputStream("test.xml"));
System.out.println("使用 jdom  成功创建了 xml 文件");
} catch (Exception e) {
System.out.println("你杯具了");
e.printStackTrace();
}
}

/*
* 采用jdom来实现xml的修改
*/
public void testUpdate() {
SAXBuilder builder = new SAXBuilder();
try {
Document document = builder.build("test.xml");
// 获取根节点
Element root = document.getRootElement();
// 通过根节点获取子节点,将子节点保存在集合中
List<Element> childList = root.getChildren();
// 遍历集合拿取数据
for (Element child : childList) {
/*
* 我们想去修改 database="mysql" 的 url
* 修改为:<url>jdbc:mysql://127.0.0.1:3306/mysql</url>
*/
// if("mysql".equals(child.getAttribute("database").getValue())){}
if ("mysql".equals(child.getAttributeValue("database"))) {
// 修改当前的元素的url的值
child.getChild("url").setText(
"jdbc:mysql://127.0.0.1:3306/mysql");
}
}

XMLOutputter out = new XMLOutputter();
// 设置 缩进格式 以及编码方式
out.setFormat(Format.getPrettyFormat().setEncoding("gb2312"));
out.output(document, new FileOutputStream("testUpdate.xml"));
System.out.println("修改成功");

} catch (Exception e) {
System.out.println("修改失败");
e.printStackTrace();
}
}

/*
* 如何删除
*/

public void testDelete() {
/* 想要实现删除 test.xml 文件中的 user,password这两个元素 */
SAXBuilder builder = new SAXBuilder();
try {
Document document = builder.build("test.xml");
Element root = document.getRootElement();
// List<Element> childList=root.getChildren();
List<Element> paramList = root.getChildren("param");
for(Element child : paramList){
if("mysql".equals(child.getAttributeValue("database"))){
//删除掉指定元素(节点)
child.removeChild("user");
child.removeChild("password");

/*//删除根目录下的所有子节点
root.removeContent(child);
break;
*/
}
}
XMLOutputter out =new XMLOutputter();
out.setFormat(Format.getPrettyFormat().setEncoding("gb2312"));
out.output(document, new FileOutputStream("test2.xml"));
System.out.println("删除成功");
} catch (Exception e) {
System.out.println("删除失败");
e.printStackTrace();
}
}

public static void main(String[] args) {
JdomDemo j = new JdomDemo();
// j.parseMenu();
// j.addXML();
j.testDelete();
}
}
分享到:
评论

相关推荐

    使用JDOM解析XML文件

    本篇文章将深入探讨如何使用JDOM解析XML文件。 首先,我们需要理解JDOM的基本结构。JDOM通过Document对象表示整个XML文档,Element代表XML元素,Attribute表示元素属性,Text表示元素内的文本内容。这些类构成了...

    java jdom解析xml

    Java JDOM解析XML是Java开发中处理XML文档的一种方法,JDOM全称为Java Document Object Model,它是一个基于Java语言的API,用于创建、修改和读取XML文档。JDOM为XML处理提供了一种高效且方便的解决方案,尤其适用于...

    用jdom解析xml

    **Java与XML:JDOM解析XML的详细指南** 在Java编程中,XML(eXtensible Markup Language)是一种被广泛使用的数据交换格式,用于存储结构化数据。为了处理XML文档,开发者可以使用多种库,其中之一就是JDOM。JDOM是...

    jdom解析xml文件

    **JDOM解析XML文件** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是一个流行的选择来解析和操作...

    用jdom解析xml文件

    在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...

    基于java的开发源码-用jdom解析xml.zip

    基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发源码-用jdom解析xml.zip 基于java的开发...

    利用JDOM解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,并基于XML中的类名生成相应的对象。 首先,我们需要理解JDOM的基本概念。JDOM提供了一组Java对象来表示XML文档,包括Element(元素)、Attribute(属性)、Text(文本...

    java利用jdom解析xml文件

    本篇文章将深入探讨如何利用JDOM解析XML文件,以及在这个过程中涉及的关键知识点。 首先,我们需要了解XML(Extensible Markup Language)的基本概念。XML是一种标记语言,用于存储和传输结构化数据。它的结构清晰...

    Jdom解析XML

    使用JDOM解析XML文档通常包括以下几个步骤: 1. 创建`SAXBuilder`实例,这是JDOM提供的解析器,可以将XML输入源转换为`Document`对象。 2. 使用`SAXBuilder`的`build`方法读取XML文件,生成`Document`对象。 3. ...

    JDOM解析xml文档实例(自己编写,仅供参考)

    1. `JDOMUtil.java`:这是一个Java类,包含了使用JDOM解析XML的主要代码。在这个例子中,我们将学习如何读取XML文件,创建一个`SAXBuilder`对象来构建XML文档的DOM(文档对象模型)表示,然后通过`Document`对象来...

    jdom解析xml文件小实例

    在这个小实例中,我们将深入探讨如何使用JDOM解析XML文件。 首先,我们需要引入JDOM的依赖。在Java项目中,如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;org.jdom &lt;artifactId&gt;...

    JDOM解析XML

    要使用JDOM解析XML,首先需要将JDOM的jar文件(如jdom.jar)添加到项目的类路径中。此外,由于XML解析通常涉及到其他库,如XPath解析和DTD处理,我们看到压缩包中还包含了一些其他相关的jar文件: 1. xalan.jar:...

    java 使用JDOM解析xml文件.docx

    Java 使用 JDOM 解析 XML 文件 Java 是一种广泛使用的程序设计语言,而 XML 是一种广泛使用的标记语言,用于存储和传输数据。在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和...

    jdom解析XML文件and把字符串解析成XML

    ### jdom解析XML文件及将字符串解析为XML #### 一、JDOM简介与环境搭建 JDOM(Java Document Object Model)是一种用Java语言编写的轻量级API,用于处理XML文档。它允许开发者轻松地读取、创建、修改XML文档,并将...

    jdom解析XML(修改为比较通用的方法)

    **JDOM解析XML详解** XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件等领域。在Java中,有多种解析XML的库,其中之一就是JDOM。JDOM是一个专为Java设计的XML API,它...

    用JDOM解析XML

    《使用JDOM解析XML》 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件等领域。JDOM(Java Document Object Model)是专门为Java设计的一个XML处理库,它提供了一种方便...

    Jdom解析xml案例

    ### JDOM解析XML的基本概念 1. **DOM(Document Object Model)**:DOM是一种树形结构,将XML文档解析为一系列的对象,这些对象可以被Java程序访问和操作。JDOM就是基于DOM模型的实现。 2. **Element**: 在JDOM中...

    jdom解析xml、dtd约束xml文件

    这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...

    jdom解析xml用到的jar包

    下面是一些使用JDOM解析XML的基本步骤: 1. **导入必要的JDOM库**:首先在Java源代码中导入JDOM相关的类,如: ```java import org.jdom.Document; import org.jdom.input.SAXBuilder; ``` 2. **创建SAXBuilder...

Global site tag (gtag.js) - Google Analytics