目前,比较流行的解析XML的技术有,JDOM、DOM4J、XQUERY等。本篇文档,主要是使用JDOM来实现对XML文档的解析。
首先,要进行JDOM解析,必须先在项目中导入相关的jar包:
1、导入jar包
2、创建XML文件
3、对xml文件进行解析和更新
贴出代码为:
package com.jjyy.jdom.parse; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.List; import org.jdom.Attribute; import org.jdom.Document; import org.jdom.Element; import org.jdom.JDOMException; import org.jdom.input.SAXBuilder; import org.jdom.output.Format; import org.jdom.output.XMLOutputter; import org.junit.Before; import org.junit.Test; /** * Jdom解析xml * * @author JiangYu * */ public class JDomParseDemo { private String name; @Before public void getLocation() { name = System.getProperty("user.dir") + "\\src\\computer.xml"; } @Test public void testCreate() { createXML(name); } @Test public void testParserAndUpdate() { parserAndUpdate(name); } /** * 创建xml文件 */ public static void createXML(String name) { try { // 创建节点 Element rootElement = new Element("computer"); Element priceElement = new Element("price"); priceElement.setText("5000"); // 设置属性 priceElement.setAttribute("way","$"); Element hardwareEle = new Element("hardware"); Element screenElem = new Element("screen"); screenElem.setText("samsung"); hardwareEle.addContent(screenElem); // 为父节点添加子元素 rootElement.addContent(priceElement); rootElement.addContent(hardwareEle); // 根据节点创建Document Document document = new Document(rootElement); // 将文档写出到硬盘 // 创建输出格式 pretty适合阅读 compact适合传输 Format format = Format.getPrettyFormat(); format.setEncoding("utf-8"); // 创建输出对象 // 创建输出对象 XMLOutputter xmlOutputter = new XMLOutputter(format); // 写出 xmlOutputter.output(document,new FileOutputStream(name)); } catch (Exception e) { e.printStackTrace(); } } /** * 解析并修改文档 * * @param name * @throws JDOMException * @throws IOException */ public static void parserAndUpdate(String name) { try { // 创建JDOm的解析器 SAXBuilder saxBuilder = new SAXBuilder(); // 创建文档对象模型 InputStream is = new FileInputStream(name); Document document = saxBuilder.build(is); // 获取根节点 Element rootElement = document.getRootElement(); // 获取指定的子节点 Element priceElement = rootElement.getChild("price"); // 获取节点的文本内容 System.out.println(priceElement.getText()); System.out.println(priceElement.getAttributeValue("way")); // 获取screen Element screenEle = rootElement.getChild("hardware").getChild("screen"); System.out.println(screenEle.getText()); // 不常用 List<Element> list = rootElement.getChildren(); System.out.println(list.size()); rootElement.getContent();// 不需要去看 了解下就型了 /** ************修改获取到的节点的信息*******都是在内存中修改的********* */ // 修改属性信息 priceElement.setAttribute("way","RMB"); // 新增一个属性 Attribute abcdAttr = new Attribute("real","yes"); priceElement.setAttribute(abcdAttr); // 添加一个节点 Element softwareElement = new Element("software"); softwareElement.setText("softWare"); rootElement.addContent(softwareElement); // 添加文本节点(当本节点已经存在别的节点,如果在使用setText会将以前的覆盖掉) // rootElement.addContent("你是一个坏人"); /** ******************将内存中的信息写会硬盘********************** */ // 创建输出的格式 pretty适合阅读 compact适合传输 Format format = Format.getPrettyFormat(); format.setEncoding("utf-8"); // 创建输出对象 XMLOutputter xmlOutputter = new XMLOutputter(format); // 写出 xmlOutputter.output(document,new FileOutputStream(name)); } catch (Exception e) { e.printStackTrace(); } } }原文链接:https://www.f2er.com/xml/297087.html