zoukankan      html  css  js  c++  java
  • xml--通过jdom解析及生产XML

    JDOM是一种使用 XML 的独特 Java 工具包,用于快速开发 XML 应用程序。它的设计包含 Java 语言的语法乃至语义。
    JAXP (用于 XML 语法分析的 Java API)包含了三个软件包
    –org.w3c.dom ,W3C 推荐的用于 XML 标准规划文档对象模型的 Java 工具
    –org.xml.sax ,用于对 XML 进行语法分析的事件驱动的简单 API
    –javax.xml.parsers ,工厂化工具,允许应用程序开发人员获得并配置特殊的语法分析器工具. JDOM 能够替换 org.w3c.dom 软件包来有计划地操作 XML 文档

    JDOM是一个开源项目,它基于树型结构,利用纯JAVA的技术对XML文档实现解析、生成、序列化以及多种操作。
    JDOM 直接为JAVA编程服务。它利用更为强有力的JAVA语言的诸多特性(方法重载、集合概念等),把SAX和DOM的功能有效地结合起来。
    JDOM是用Java语言读、写、操作XML的新API函数。在直接、简单和高效的前提下,这些API函数被最大限度的优化。

    JDOM 主要用来弥补DOM及SAX在实际应用当中的不足之处。这些不足之处主要在于SAX没有文档修改、随机访问以及输出的功能,而对于DOM来说,JAVA程序员在使用时来用起来总觉得不太方便

    jdom官方网站http://www.jdom.org/,目前最新包为:JDOM2.0.5.

    例子:

    package com.jdom;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.List;
    
    import org.jdom2.Attribute;
    import org.jdom2.Document;
    import org.jdom2.Element;
    import org.jdom2.input.SAXBuilder;
    import org.jdom2.output.Format;
    import org.jdom2.output.XMLOutputter;
    
    public class JDomTest2 {
    	public static void main(String[] args) throws Exception {
    		SAXBuilder builder = new SAXBuilder();
    
    		Document doc = builder.build(new File("student.xml"));
    
    		Element element = doc.getRootElement();
    
    		System.out.println(element.getName());
    		// 获取第一个
    		Element hello = element.getChild("学生");
    
    		System.out.println(hello.getText());
    
    		List<Element> els = element.getChildren();
    		for (Element el : els) {
    			List elList = el.getAttributes();
    			for (int i = 0; i < elList.size(); i++) {
    				Attribute attr = (Attribute) elList.get(i);
    
    				String attrName = attr.getName();
    				String attrValue = attr.getValue();
    
    				System.out.println(attrName + "=" + attrValue);
    			}
    			System.out.println("姓名:" + el.getChildText("姓名"));
    			System.out.println("性别:" + el.getChildText("性别"));
    			System.out.println("年龄" + el.getChildText("年龄"));
    			System.out.println("===============");
    		}
    
    		//可以对XML进行编辑
    		Element addEl = new Element("学生");
    		Attribute attr = new Attribute("学号", "4");
    		
    		Element addEl01 = new Element("姓名");
    		addEl01.setText("我爱罗");
    		addEl.addContent(addEl01);
    		Element addEl02 = new Element("性别");
    		addEl02.setText("男");
    		addEl.addContent(addEl02);
    		
    		addEl.setAttribute(attr);
    		element.addContent(addEl);
    		
    		XMLOutputter out = new XMLOutputter(Format.getPrettyFormat());
    
    		out.output(doc, new FileOutputStream("student2.xml"));
    
    	}
    }
    

    1、首先读取XML文件。

    2、获取根节点,并取得根节点下的子节点,详见截图。

    3、输出XML文件各个节点的值,详见截图。


    4、通过JDOM可以编进XML,并生成新的XML,详见截图。

    附XML:

    <?xml version="1.0" encoding="utf-8"?>
    <学生名册 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="student.xsd" >
    	<学生 学号="1">
    		<姓名>张三</姓名>
    		<性别>男</性别>
    		<年龄>20</年龄>
    	</学生>
    	<学生 学号="2">
    		<姓名>李四</姓名>
    		<性别>女</性别>
    		<年龄>19</年龄>
    	</学生>
    	<学生 学号="3">
    		<姓名>王五</姓名>
    		<性别>男</性别>
    		<年龄>21</年龄>
    	</学生>
    </学生名册>
    
  • 相关阅读:
    时序点过程学习笔记
    蚂蚁集团 CeresDB 团队 | Rust CPU Affinity 初探
    宽客Quant量化投资书籍推荐(33本)
    线性代数库调研
    比较OpenBLAS,Intel MKL和Eigen的矩阵相乘性能
    空间点过程&点格局分析
    4-网络芯片CH395Q学习开发-关于中断检测和DHCP实验
    3-网络芯片CH395Q学习开发-芯片初始化,网线连接检测实验(轮训和中断方式)
    2-网络芯片CH395Q学习开发-学习资料说明,测试通信,获取硬件版本,获取设备本身MAC,代码移植说明
    001-STM32+Air724UG基本控制篇(华为云物联网平台)--测试STM32+Air724UG(4G模组),Android,微信小程序等连接华为云物联网平台
  • 原文地址:https://www.cnblogs.com/james1207/p/3266454.html
Copyright © 2011-2022 走看看