JdomTest.java
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
import org.w3c.dom.NodeList;
//一个用读取XML的例子
public class JdomTest {
/**
* @param args
*/
public static void main(String[] args) {
String fileName = "src/com/huanglq/log4j_config/MyXml.xml";
try {
InputStreamReader isr = new InputStreamReader(new FileInputStream(
fileName));
// long startDate=new Date().getTime();
SAXBuilder builder = new SAXBuilder(
"org.apache.xerces.parsers.SAXParser");
// 用了其他的解析器:xerces:org.apache.xerces.parsers.SAXParser,其实用默认解析器也可以解析,这里不用会更加快
// System.out.println(new Date().getTime()-startDate);
Document doc = builder.build(isr);
isr.close();
Element root = doc.getRootElement();// 根节点
// System.out.println(root);
System.out.println("根节点:"+root.getName());// animal
// 获得根节点下的元素集合
List<Element> elementlist = root.getChildren();
for (Element element : elementlist) {
System.out.println("根节点下的元素:"+element.getName());
/*
* 打印结果: person person dog
*/
// 获得子元素名为name的Value
String name = element.getChildText("name");
// 获得子元素名为age的Value,去前后空格
String age = element.getChildTextTrim("age");
System.out.println("该元素下的子元素为name的值:"+name + "* 该元素下的子元素为age的值:" + age);
System.out.println("-------------------");
}
// 获得根元素下是person的子元素
List<Element> personList = root.getChildren("person");
for (Element person : personList) {
System.out.println(person.getName());// person
// 获得person下的元素
List<Element> personElement = person.getChildren();
for (Element e : personElement) {
// e.getName()获得元素名,e.getText()获得该元素的值
System.out.println(e.getName() + " " + e.getText());
}
System.out.println("^^^^^^^^^^^^^^^^^^^^^^^^");
}
//获得根元素下是dog的子元素
List<Element> dogList = root.getChildren("dog");
//输出名为tom的狗的年龄
for(int i=0;i<dogList.size();i++){
String dogName=dogList.get(i).getChild("name").getTextTrim();
//System.out.println(dogName);
if("tom".equalsIgnoreCase(dogName)){
System.out.println(dogList.get(i).getChild("name").getTextTrim()+" "+dogList.get(i).getChild("age").getTextTrim());
dogList.get(i).getChild("age").setText("11");
System.out.println(dogList.get(i).getChild("age").getTextTrim());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
----------------------------
JdomUtil.java
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.input.SAXBuilder;
/**
* 使用这工具的说明:该类对应的XML文件最好不要存在重复元素,
* 如果存在重复元素,那么元素的子元素名为name的值一定要不一样
* 这个类是一个读取XML配置文件的类
* @author root
*
*/
public class JdomUtil {
//要读取的XML文件的路径/文件名
private static String fileName = "src/com/huanglq/log4j_config/MyXml.xml";
// 根节点
private static Element root = null;
/**
*return 根节点(root)
*/
private static Element getRootElement() {
try {
InputStreamReader isr = new InputStreamReader(new FileInputStream(
fileName));
/*
* 建立解析器
* 用了其他的解析器(要加入其他的包(xml-apis.jar)):(速度200mm)xerces:org.apache.xerces.parsers.SAXParser
* 其实用默认解析器(不用加入其他的包)也可以解析 (速度100mm)
*jdk自带的60mm(这里的速度是是一个参考)
*/
SAXBuilder builder = new SAXBuilder("org.apache.xerces.parsers.SAXParser");
Document doc = builder.build(isr);
root = doc.getRootElement();// 根节点
isr.close();
} catch (Exception e) {
e.printStackTrace();
}
return root;
}
/**
* 根据根元素下的元素名及该元素的子元素名返回该元素的子元素的值
* @param parent根元素下的元素名
* @param child 根元素下的元素的子元素名
* @return 根元素下的元素的子元素的值
*/
public static String getElementValue(String parent,String child){
getRootElement();
String value="";
List<Element> elementList=root.getChildren(parent);
value=elementList.get(0).getChildTextTrim(child);
return value;
}
/**
* 如果根元素存在2个或以上一样的子元素的话,就用他们不同name的值来区别他们
* 根据根元素下的元素名及该元素的子元素名和值,返回该元素其他子元素的值
* @param parent根元素下的元素名
* @param child 根元素下的元素的第一个子元素名(即name)
* @param name_value 根元素下的元素的子元素的值
* @return Map<元素名,元素值>
*/
public static Map<String,String> getElementValues(String parent,String child,String name_value){
Map<String,String> values=new HashMap<String,String>();
getRootElement();
List<Element> elementList=root.getChildren(parent);
for(Element element:elementList){
if(name_value.equalsIgnoreCase(element.getChildTextTrim(child))){
List<Element> children=element.getChildren();
for(Element e:children){
values.put(e.getName(), e.getTextTrim());
}
}
}
return values;
}
//测试
public static void main(String[] args){
String name=getElementValue("person","name");
System.out.println(name);
Map<String,String> values=getElementValues("person","name","kyo");
System.out.println(values.get("age"));
}
}
<?xml version="1.0" encoding="UTF-8"?>
<animal>
<person>
<name> huanglq</name>
<age>21</age>
</person>
<person>
<name>kyo</name>
<age>22</age>
</person>
<dog>
<name>toly</name>
<age>1</age>
</dog>
<dog>
<name>tom</name>
<age>3</age>
</dog>
</animal>
分享到:
相关推荐
**JDOM操作XML详解** XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是处理XML的一种API,它提供了...
这个例子展示了如何使用JDOM读取、修改并保存XML文档。通过JDOM,我们可以轻松地处理XML数据,无论是简单的文档还是复杂的结构,都能得心应手。在实际项目中,根据需求选择适当的解析器,结合JDOM提供的API,可以...
这个例子中,我们首先创建一个`SAXBuilder`,然后解析名为`input.xml`的文件。接着,我们获取根元素,并遍历其所有子元素,打印出它们的名称、属性和文本内容。 JDOM库提供了丰富的功能,使得在Java中处理XML变得...
以下是一个简单的例子,演示如何使用JDOM解析XML文件: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; public class JDomExample { public static void main...
2. **例子**:这些示例代码通常展示了如何使用JDOM进行XML操作,包括解析XML文件、创建新的XML文档、修改现有文档、查询元素和属性等。通过学习这些例子,开发者可以快速上手并应用到自己的项目中。 3. **帮助文档*...
JDOM 是一个专门为Java设计的XML处理库,它结合了SAX和DOM的优点,提供了一种高效且易于使用的API来创建、解析和操作XML文档。JDOM的主要目标是简化XML处理,通过利用Java语言的强大特性,如方法重载、集合和映射,...
在这个例子中,我们创建了一个 XML 文档,包括根元素 `School`,以及它的子元素 `College` 和 `Class`。每个元素都可能有属性和文本内容。最后,我们使用 `XMLOutputter` 将 `Document` 对象写入到一个文件中。 ...
在这个例子中,我们首先创建了一个名为"root"的根元素,然后添加了一个子元素"child1",并设置了其文本内容。最后,通过调用`doc.toString()`,可以将整个XML文档转换为字符串形式输出。 JDOM 1.0不仅支持XML的创建...
这个例子可以帮助初学者快速理解JDOM的基本用法。 ```java import org.jdom2.*; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; import java.io.File; import java.io.FileOutputStream;...
下面是一个简单的例子: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; public class JDOMTest { public static void main(String[] args) throws ...
这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...
在这个例子中,我们将深入探讨如何使用JDOM解析XML文件,并进行遍历与构建。 首先,我们需要了解JDOM的基本概念。JDOM主要由三部分构成:SAXBuilder用于从XML源构建DOM树,Element代表XML文档的元素,Attribute代表...
以下是一个简单的例子,展示了如何使用JDOM生成一个包含中文字符的XML文档: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.Format; import org.jdom2.output....
JDOM(Java Document Object Model)是Java中处理XML文档的一个库,它提供了一种简单、高效的API来读取、创建和修改XML文档。本篇将详细介绍如何使用JDOM解析XML文件,并将其内容存入HashMap中。 首先,我们需要...
这个例子中,我们首先使用SAXBuilder读取AndroidManifest.xml文件,然后找到`<application>`和`<activity>`节点,并修改了`<activity>`的`android:name`属性,添加了换行符。最后,使用XMLOutputter以格式化的形式将...
这个例子展示了如何使用JDOM从XML文件中读取数据。首先创建`SAXBuilder`实例,然后解析XML文件得到`Document`对象。通过`Document`获取根元素,并遍历其子元素(在这个例子中是"employee"元素)。 总之,JDOM为Java...
在这个例子中,我们获取所有名为 "disk" 的元素。 6. **遍历元素并提取数据**: ```java for (int i = 0; i (); i++) { Element element = (Element) list.get(i); String name = element.getAttributeValue(...
**JDOM 2.0.5.jar:XML处理的利器** 在Java开发中,处理XML文档是一项常见的任务。JDOM,全称为Java Document Object Model,是一...结合提供的源程序例子,学习和理解JDOM的用法,可以极大地提升处理XML文档的能力。
以下是一个简单的例子: ```java import org.jdom2.Document; import org.jdom2.input.SAXBuilder; public class JdomReader { public static void main(String[] args) { try { SAXBuilder builder = new ...
**JDOM:XML处理的Java库** JDOM是Java Document Object Model的缩写,它是一个专为Java设计的API,用于处理XML文档。XML(eXtensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。JDOM提供了...