网站首页 > java教程 正文
1.读取xml文件
文件格式如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释:以上抬头声明必须放在第一行,必须有 -->
<!--  根标签只能有一个 -->
<users>
    <user id="1" desc="第一个用户">
        <name addr="龙岩">张无忌</name>
        <sex>男</sex>
        <地址>光明顶</地址>
        <password>minmin</password>
        <data> 3 < 2 && 5 > 4 </data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>
    <people>很多人</people>
    <user id="2">
        <name>敏敏</name>
        <sex>女</sex>
        <地址>光明顶</地址>
        <password>wuji</password>
        <data> 3 < 2 && 5 > 4 </data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>
</users>
package com.itheima.d2_xml;
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import java.io.File;
import java.net.URL;
import java.util.List;
/**
 * 目标:掌握使用Dom4j框架解析XML文件。
 */
public class Dom4JTest1 {
    public static void main(String[] args) throws Exception {
// TestGetResource.java
// 当前包名为:com.loc
//获取当前class文件所在位置,以URL形式返回
        URL url = Class.class.getClass().getResource("/");
//输出:file:/D:/dev/workspace/AnyTest/bin/com/loc/
        System.out.println(url);
//去除file:前缀后剩下的部分:/D:/dev/workspace/AnyTest/bin/com/loc/
        System.out.println(url.getPath());
        // 1、创建一个Dom4J框架提供的解析器对象
        SAXReader saxReader = new SAXReader();
        // 2、使用saxReader对象把需要解析的XML文件读成一个Document对象。
        Document document =
                saxReader.read(url + "\\helloworld.xml" );
        // 3、从文档对象中解析XML文件的全部数据了
        Element root = document.getRootElement();
        System.out.println(root.getName());
        // 4、获取根元素下的全部一级子元素。
        // List<Element> elements = root.elements();
        List<Element> elements = root.elements("user");
        for (Element element : elements) {
            System.out.println(element.getName());
						// 读取user节点的name节点,是否为空用null判断
            Element elements2 = element.element("name");
            System.out.println("elements2=" + elements2);
                if (elements2.attributeValue("addr") != null) {
                    System.out.println("addr=" + elements2.attributeValue("addr"));
                } else if(elements2.attributeValue("addr") == null){
                    System.out.println("addr2=" + elements2.attributeValue("addr"));
            }
        }
        System.out.println("------------------");
        // 5、获取当前元素下的某个子元素。
        Element people = root.element("people");
        System.out.println(people.getText());
        // 如果下面有很多子元素user,默认获取第一个。
        Element user = root.element("user");
        System.out.println(user.elementText("name"));
        // 6、获取元素的属性信息呢?
        System.out.println(user.attributeValue("id"));
        Attribute id = user.attribute("id");
        System.out.println(id.getName());
        System.out.println(id.getValue());
        List<Attribute> attributes = user.attributes();
        for (Attribute attribute : attributes) {
            System.out.println(attribute.getName() + "=" + attribute.getValue());
        }
        // 7、如何获取全部的文本内容:获取当前元素下的子元素文本值
        System.out.println(user.elementText("name"));
        System.out.println(user.elementText("地址"));
        System.out.println(user.elementTextTrim("地址")); // 取出文本去除前后空格
        System.out.println(user.elementText("password"));
        Element data = user.element("data");
        System.out.println(data.getText());
        System.out.println(data.getTextTrim()); // 取出文本去除前后空格
    }
}
2.写xml
package com.itheima.d2_xml;
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.net.URL;
import java.net.URLDecoder;
import static jdk.nashorn.internal.runtime.GlobalFunctions.decodeURI;
/**
 * 目标:如何使用程序把数据写出到 XML文件中去。
 * <?xml version="1.0" encoding="UTF-8" ?>
 * <book>
 *     <name addr="龙岩">从入门到跑路</name>
 *     <author>dlei</author>
 *     <price>999.9</price>
 * </book>
 */
public class Dom4JTest2 {
    public static void main(String[] args) {
        // 1、使用一个StringBuilder对象来拼接XML格式的数据。
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");
        sb.append("<book>\r\n");
        sb.append("\t<name " + " addr=\"" + "龙岩" + "\""  + ">").append("从入门到跑路").append("</name>\r\n");
        sb.append("\t<author>").append("dlei").append("</author>\r\n");
        sb.append("\t<price>").append(999.99).append("</price>\r\n");
        sb.append("</book>");
        URL url = Class.class.getClass().getResource("/");
        System.out.println(URLDecoder.decode(url.getPath()));
        try (
                BufferedWriter bw = new BufferedWriter(new FileWriter(URLDecoder.decode(url.getPath()) + "\\book.xml"));
                ){
            bw.write(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
输出xml文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<book>
   <name  addr="龙岩">从入门到跑路</name>
   <author>dlei</author>
   <price>999.99</price>
</book>猜你喜欢
- 2024-10-17 Qt开发-DOM方式解析XML(qt开发工具)
- 2024-10-17 JAVA 操作笔记-XML(六)(xml在java中怎么用)
- 2024-10-17 作为一名程序猿,你不可不知的Java基础知识的三十个经典问答
- 2024-10-17 Android中XML文件解析,现在了解还不晚
- 2024-10-17 JSP 标准标签库(JSTL)(jsp标签库有哪些)
- 2024-10-17 Spring源码阅读:Spring XML解析机制
- 2024-10-17 XML文件(xml文件怎么打开)
- 2024-10-17 Python如何解析HTML和XML数据(python解析html xml最好的模块)
- 2024-10-17 深入解析Python中的XML处理:理论与实践的结合
- 2024-10-17 XML的解析方式(xml的解析方式有哪些)
欢迎 你 发表评论:
- 最近发表
- 标签列表
- 
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
 

本文暂时没有评论,来添加一个吧(●'◡'●)