`

JDom例子

    博客分类:
  • XML
阅读更多
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 操作的例子和包

    **JDOM操作XML详解** XML(Extensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java中,JDOM(Java Document Object Model)是处理XML的一种API,它提供了...

    jdom处理xml例子

    这个例子展示了如何使用JDOM读取、修改并保存XML文档。通过JDOM,我们可以轻松地处理XML数据,无论是简单的文档还是复杂的结构,都能得心应手。在实际项目中,根据需求选择适当的解析器,结合JDOM提供的API,可以...

    Jdom解析xml案例

    这个例子中,我们首先创建一个`SAXBuilder`,然后解析名为`input.xml`的文件。接着,我们获取根元素,并遍历其所有子元素,打印出它们的名称、属性和文本内容。 JDOM库提供了丰富的功能,使得在Java中处理XML变得...

    jdom.rar内含多个jdom包

    2. **例子**:这些示例代码通常展示了如何使用JDOM进行XML操作,包括解析XML文件、创建新的XML文档、修改现有文档、查询元素和属性等。通过学习这些例子,开发者可以快速上手并应用到自己的项目中。 3. **帮助文档*...

    JDOM使用详解及实例

    JDOM 是一个专门为Java设计的XML处理库,它结合了SAX和DOM的优点,提供了一种高效且易于使用的API来创建、解析和操作XML文档。JDOM的主要目标是简化XML处理,通过利用Java语言的强大特性,如方法重载、集合和映射,...

    jdom读取xml详细例子

    jdom读取xml详细例子,每句代码后面都有注释,详细的不能再详细啦!

    jdom1.0.jar

    在这个例子中,我们首先创建了一个名为"root"的根元素,然后添加了一个子元素"child1",并设置了其文本内容。最后,通过调用`doc.toString()`,可以将整个XML文档转换为字符串形式输出。 JDOM 1.0不仅支持XML的创建...

    jdom 下载 jdom 下载

    以下是一个简单的例子,演示如何使用JDOM解析XML文件: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.input.SAXBuilder; public class JDomExample { public static void main...

    一个Jdom用法的简单例子

    这个例子可以帮助初学者快速理解JDOM的基本用法。 ```java import org.jdom2.*; import org.jdom2.output.Format; import org.jdom2.output.XMLOutputter; import java.io.File; import java.io.FileOutputStream;...

    jdom解析xml、dtd约束xml文件

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

    用jdom解析xml文件

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

    Java生成xml(jdom)

    以下是一个简单的例子,展示了如何使用JDOM生成一个包含中文字符的XML文档: ```java import org.jdom2.Document; import org.jdom2.Element; import org.jdom2.output.Format; import org.jdom2.output....

    jdom 解析xml存入hashmap的例子

    JDOM(Java Document Object Model)是Java中处理XML文档的一个库,它提供了一种简单、高效的API来读取、创建和修改XML文档。本篇将详细介绍如何使用JDOM解析XML文件,并将其内容存入HashMap中。 首先,我们需要...

    jdom源码及jar

    这个例子中,我们首先使用SAXBuilder读取AndroidManifest.xml文件,然后找到`&lt;application&gt;`和`&lt;activity&gt;`节点,并修改了`&lt;activity&gt;`的`android:name`属性,添加了换行符。最后,使用XMLOutputter以格式化的形式将...

    dom4j和jdom解析XML小例子

    dom4j和jdom解析XML小例子

    jdom.jar xml解析

    这个例子展示了如何使用JDOM从XML文件中读取数据。首先创建`SAXBuilder`实例,然后解析XML文件得到`Document`对象。通过`Document`获取根元素,并遍历其子元素(在这个例子中是"employee"元素)。 总之,JDOM为Java...

    jdom-2.0.5.jar(带一个源程序)

    **JDOM 2.0.5.jar:XML处理的利器** 在Java开发中,处理XML文档是一项常见的任务。JDOM,全称为Java Document Object Model,是一...结合提供的源程序例子,学习和理解JDOM的用法,可以极大地提升处理XML文档的能力。

    jdom的使用(读取和写入)

    以下是一个简单的例子: ```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

    **JDOM:XML处理的Java库** JDOM是Java Document Object Model的缩写,它是一个专为Java设计的API,用于处理XML文档。XML(eXtensible Markup Language)是一种结构化数据格式,广泛用于存储和传输数据。JDOM提供了...

    利用JDOM解析XML的例子

    这是一个利用JDOM解析XML的方法,虽然for循环比较繁琐,但是容易理解,有利于初学者学习

Global site tag (gtag.js) - Google Analytics