用原生的dom来解析xml(就是传统的DocumentBuilderFactory---->DocumentBuilder--->Document的方式)确实比较费力;好在现在有很多第三方的解析工具了,在这方面jdom就相当优秀,我个人也比较喜欢用;其实说到xml文件,在开发中对其的操作无非就是增删改查了,其中最常用的就是查了,不过为了全面,在这里把所有的总结了;
代码和所用的jar放在附件中,jdom.xml文件的路径是 工程名字\src\jdom.xml
package jdom;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;
import org.jdom.output.XMLOutputter;
public class JdomParse {
private static String fileName="jdom.xml";
private static SAXBuilder saxBuilder;
private static Document document;
private static final String classpath=Thread.currentThread().getContextClassLoader().getResource("").getPath();
//private static final String classpath=JdomParse.class.getClassLoader().getResource("").getPath();
private static String filePath;
private static File workFile;
static{
saxBuilder=new SAXBuilder();
try {
filePath=classpath+fileName;
workFile=new File(filePath);
document=saxBuilder.build(new File(filePath));
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**遍历xml文件中的元素*/
public void parse(){
Element root=document.getRootElement();
System.out.println("root---"+root.getName());
Element title=root.getChild("title");
//根据元素名字获得元素
System.out.println("title----"+title.getText());
Element contents=root.getChild("contents");
List chapterList=contents.getChildren("chapter");
//根据和元素名对应的孩子序列
System.out.println("list--size---"+chapterList.size());
for (int i = 0; i < chapterList.size(); i++) {
Element chapter=(Element) chapterList.get(i);
List topicList=chapter.getChildren("topic");
for (int j = 0; j < topicList.size(); j++) {
Element topic=(Element) topicList.get(j);
String name=topic.getChild("name").getText();
String address=topic.getChildText("address");
System.out.println("name---"+name);
System.out.println("address---"+address);
String email=topic.getChildText("email");
if(email!=null&&!email.equalsIgnoreCase("")){
System.out.println("emai---"+email);
}
}
}
}
/**向xml文件中增加一个元素*/
public void insert(){
Element root=document.getRootElement();
Element appendix=new Element("appendix");
appendix.setAttribute("id", "101");
appendix.setText("after Title");
Element author=new Element("author");
author.setText("qinjk");
appendix.addContent(author);
root.addContent(appendix);
try {
XMLOutputter xmlOutputter=new XMLOutputter();
OutputStream os=new FileOutputStream(workFile);
xmlOutputter.output(document, os);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**从xml文件中删除一个元素*/
public void remove(){
Element root=document.getRootElement();
List appendixList=root.getChildren("appendix");
for (int i = 0; i <appendixList.size(); i++) {
Element appendix=(Element) appendixList.get(i);
if(appendix.getAttributeValue("id").equalsIgnoreCase("101")){
try {
root.removeContent(appendix);
XMLOutputter xmlOutputter=new XMLOutputter();
OutputStream os=new FileOutputStream(workFile);
xmlOutputter.output(document, os);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**更新xml文件中某一元素的值*/
public void modify(){
Element root=document.getRootElement();
List appendixList=root.getChildren("appendix");
for (int i = 0; i <appendixList.size(); i++) {
Element appendix=(Element) appendixList.get(i);
if(appendix.getAttributeValue("id").equalsIgnoreCase("101")){
try {
appendix.setAttribute("id","22222");
XMLOutputter xmlOutputter=new XMLOutputter();
OutputStream os = new FileOutputStream(workFile);
xmlOutputter.output(document, os);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
public static void main(String[] args) {
new JdomParse().parse();
}
}
分享到:
相关推荐
NULL 博文链接:https://xurichusheng.iteye.com/blog/1518547
jdom解析xml文件的源代码、jar包以及示例xml文件
jdom解析xml文件小实例jdom解析xml文件小实例jdom解析xml文件小实例
利用JDOM解析xml文件,并根据xml中为类名,生成相应的对象。
一个关于用jdom解析xml,遍历xml,建立xml的简单例子.
Java 使用 JDOM 解析 XML 文件 Java 是一种广泛使用的程序设计语言,而 XML 是一种广泛使用的标记语言,用于存储和传输数据。在 Java 中,解析 XML 文件是一件常见的任务,而 JDOM 是一个流行的开源库,用于解析和...
jdom解析XML文件and把字符串解析成XML.txt jdom解析XML文件and把字符串解析成XML.txtjdom解析XML文件and把字符串解析成XML.txt
Dom JDom 解析xml 文件 Dom JDom 解析xml 文件 Dom JDom 解析xml 文件 自己使用 最好不要下载
一份详细介绍了JDOM的基本结构和类。以及用JDOM解析XML文件时常用的方法。并举例进行说明。对于学习JDOM有很大的帮助。虽然是英文版,但是简单易通。初学者可以参考。
使用JDM技术解析XML文档,在了解此程序前请到JDOM官网下载一个JDOM的类包,然后配置环境变量或者将类包连接到eclipse路径中,此程序完全可以运行,在压缩包中还包括原xml文档!!!请参考!
xml样例 博文链接:https://jingrenlang.iteye.com/blog/356160
对于含有子节点的复杂的XML文件,可以采用jdom.jar来解析。 上传的文件包括程序,XML文件,jdom包,jdbc包 对于复杂的XML文件,可以采用层层解析,虽然方法不是很简便,但是,可以完成解析的任务,而且,准确率很高...
NULL 博文链接:https://zhaohong.iteye.com/blog/426761
这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写以及dtd文件约束xml文件。这是一个jdom解析xml的小例子、里面还有dtd文件的编写...
Java中使用jdom解析xml的案例, 以及文档说明。
使用jdom解析xml的实例 包括生成新的xml文件,读取xml和修改xml 项目是myeclipse创建的
解析XML的JDOM的jar包,只有引入这个包就可以解析xml了
利用jdom读取xml 虽然是我自己写的 但是觉得有必要与大家分享一下
用jdom解析xml源代码资料