Java中Xml4j的使用

30 篇文章 1 订阅

一、导入Xml4j.rar到Idea中

测试环境:Windows10专业版
应用软件:IntelliJ IDEA 2021.1 x64
测试时间:2022年8月21日 20点22分
File–>Project Structure…
在这里插入图片描述
Project Settings–>Libraries–>+
在这里插入图片描述±->Java
在这里插入图片描述目录–>OK
在这里插入图片描述
在这里插入图片描述

二、Xml4j在Java中的操纵

1.在Java中读取文件的操作

(一).初始化

/**
 * @description 将XML转为Document对象
 * @author Jule_zhou
 * @date 2022-08-20 16:38:27
 * @param file 文件地址
 * @return
 */
public static Document document(File file) {
    SAXReader saxReader = new SAXReader();
    Document document = null;
    try {
        document = saxReader.read(file);
    } catch (DocumentException e) {
        e.printStackTrace();
    }
    return document;
}

附加代码

// 获取根节点
Element rootElement = document.getRootElement();

(二).遍历节点

/**
 * @description 遍历一个节点中的次一级所有节点
 * @author Jule_zhou
 * @date 2022-08-21 11:45:05
 * @param element 子一级节点List集合
 * @return {@link ArrayList <  Element >} 父级节点
 */
static ArrayList<Element> getLastElement(Element element){
    // 存放节点信息
    ArrayList<Element> elements = new ArrayList<>();
    Iterator<Element> iterator = element.elementIterator();
    // 遍历所有次一级节点
    while (iterator.hasNext()){
        // 遍历拿取节点
        Element lastElement = iterator.next();
        // 添加节点信息,存储到List中
        elements.add(lastElement);
    }
    return elements;
}

主要代码说明

// 获取当前标签节点下的所有子节点标签
// 当前节点为Element element;
Iterator<Element> iterator = element.elementIterator();

(三).遍历得到节点中的内容

/**
 * @description 遍历标签中文本内容
 * @author Jule_zhou
 * @date 2022-08-21 12:13:58
 * @param element
 * @return {@link String} 文本
 */
static String getText(Element element)throws NullPointerException{
    String str = "";
    str = element.getTextTrim();
    if ("".equals(str)){
        throw new NullPointerException("未找到文本内容!");
    }
    return str;
}

特别代码说明

// getTextTrim()方法可以去除换行,如果存在多行数据,在str会出现间隔,但仍然是一个字符串(且该字符串内不存在换行)
// getTextTrim()方法不可以去除换行,会有大量空格产生
String str = element.getTextTrim();

附加代码

// attributeValue(String)方法可获得该节点属性值,其中需要传递一个String类型的属性名称
// 在Xml文件中<body number = "000"></body>,number就是属性名称,000就是属性值
String number = element.attributeValue("number");

(四).总结

方法名作用
SAXReader()解析Xml文件
saxReader.read()读取文档并返回一个文档实体类型
document.getRootElement()获取Xml根节点
element.elementIterator();获取字节点
getTextTrim()获得文本
element.attributeValue()获得属性值

2.存储已经创建好的Document树(文件保存)

/**
 * @description 存储数据
 * @author Jule_zhou
 * @date 2022-08-21 22:56:59
 * @param document 要写入的数据Document类型
 * @return
 */
public void write(Document document,File file){
    // 创建格式化
    OutputFormat outputFormat = OutputFormat.createPrettyPrint();
    // 设置编码格式
    outputFormat.setEncoding("UTF-8");
    try {
        // 创建写入,(创建写入方式,设定编码格式)
        XMLWriter xmlWrite = new XMLWriter(new FileWriter(file),outputFormat);
        // 写入Document文件
        xmlWrite.write(document);
        xmlWrite.flush();
        xmlWrite.close();
    } catch (IOException e) {
        e.printStackTrace();
    }

知识点附加

OutputStream带有Stream字节流
Writer,字符流,更适合于中文读写

主要代码说明

// 创建格式化
OutputFormat outputFormat = OutputFormat.createPrettyPrint();
// 设置编码格式
outputFormat.setEncoding("UTF-8");
// 创建FileWrite的字符流写入
FileWrite fileWrite = new FileWriter(file);
// 创建写入,(创建写入方式,设定编码格式)
XMLWriter xmlWrite = new XMLWriter(fileWrite ,outputFormat);
// 使用write方法写入Document文件
 xmlWrite.write(document);

3.创建一个DOM4j实例

/**
 * @description 创建一个DOM4j实例
 * @author Jule_zhou
 * @date 2022-08-24 16:12:20
 * @param
 * @return {@link Document}
 */
public Document createDocument(){
    // 创建一个Document对象
    Document document = DocumentHelper.createDocument();
    
    // 添加根节点
    Element rootEle = document.addElement("mobiles");
    
    // 添加子节点
    Element cardNumberEle = rootEle.addElement("cardNumber");
    // 添加cardNumberEle节点的属性
    cardNumberEle.addAttribute("number","0000000");
    
    // 添加cardNumber的子节点
    Element mobilCardEle = cardNumberEle.addElement("mobilCard");
    Element consumInfosEle = cardNumberEle.addElement("consumInfos");
    
    // 添加mobilCardEle的子节点
    Element userNameEle = mobilCardEle.addElement("userName");
    Element passWordEle = mobilCardEle.addElement("passWord");
    Element serPackageEle = mobilCardEle.addElement("serPackage");
    Element consumAmoutEle = mobilCardEle.addElement("consumAmout");
    Element moneyEle = mobilCardEle.addElement("money");
    Element realTalkTimeEle = mobilCardEle.addElement("realTalkTime");
    Element realSMSCountEle = mobilCardEle.addElement("realSMSCount");
    Element realFlowEle = mobilCardEle.addElement("realFlow");
    // 添加consumInfosEle的子节点
    Element consumInfoEle = consumInfosEle.addElement("consumInfo");
    // 添加consumInfoEle的子节点的属性
    consumInfoEle.addAttribute("id","0");
    
    // 添加serPackageEle的子节点
    Element priceEle = serPackageEle.addElement("price");
    Element talkTimeEle = serPackageEle.addElement("talkTime");
    Element smsCountEle = serPackageEle.addElement("smsCount");
    Element flowEle = serPackageEle.addElement("flow");
    // 添加consumInfosEleEle的子节点
    Element typeEle = consumInfoEle.addElement("type");
    Element consumDataEle = consumInfoEle.addElement("consumData");
    
    return document;
}

主要代码说明

// 创建一个Document对象(创建对象)
Document document = DocumentHelper.createDocument();
// 添加根节点(创建节点)
Element rootEle = document.addElement("mobiles");
// 添加子节点(创建节点)
Element cardNumberEle = rootEle.addElement("cardNumber");
// 添加cardNumberEle节点的属性(添加属性)
cardNumberEle.addAttribute("number","0000000");

4.增改操作已经在内,删除操作使用remove();方法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 使用dom4j解析xml文件可以通过以下步骤完成: 1. 加载xml文件,可以使用以下代码: ``` DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document doc = builder.parse(new File("file.xml")); ``` 2. 获取根节点,使用以下代码: ``` Element root = doc.getRootElement(); ``` 3. 遍历子节点,使用以下代码: ``` List<Element> childList = root.elements(); for (Element child : childList) { //对子节点进行操作 } ``` 4. 获取节点属性,使用以下代码: ``` String attributeValue = element.attributeValue("attributeName"); ``` 5. 获取节点值,使用以下代码: ``` String value = element.getText(); ``` ### 回答2: Java是一种流行的编程语言,在处理XML文件时,有很多的库可供选择。dom4j则是其的一种库,它是一种同步、线程安全的XML解析器,拥有高效、灵活、简单的API。 dom4j解析XML文件分为以下步骤: 1. 创建SAXReader对象,它是dom4j解析器的核心类。 2. 调用SAXReader对象的read()方法,通过文件输入流读取XML文件内容并将其转换成一个Document对象。 3. 从Document对象取到根元素(root element)。 4. 从根元素开始递归遍历所有子元素,获取特定元素的值或属性,修改元素的值或属性。 下面对以上步骤进行详细说明: 1. 创建SAXReader对象 SAXReader对象是dom4j解析器的核心对象,要解析XML文件,需要先创建该对象。创建SAXReader对象的代码如下: SAXReader reader = new SAXReader(); 2. 解析XML文件 要解析XML文件,需要调用SAXReader对象的read()方法,并传入要解析的XML文件名或者文件输入流。代码示例如下: Document document = reader.read(new File("test.xml")); 3. 获取根元素 解析完成后,需要获取XML文件的根元素(即文档的最外层标签)。获取根元素的代码如下: Element root = document.getRootElement(); 4. 遍历所有子元素 获取根元素之后,可以通过遍历所有子元素来获取需要的元素、属性或者修改元素内容。遍历子元素的代码如下: List<Element> elements = root.elements(); for(Element element : elements) { // 对元素进行处理 } dom4j除了上述基本步骤外,还提供了更多的API和工具类,方便我们在XML文件处理过程进行元素的增删改查、元素内容的验证和转换等操作。总的来说,dom4j是一种易用、灵活的XML解析器,广泛应用于Java开发领域。 ### 回答3: DOM4JJava语言的一种XML文档操作工具包,它可以方便地对XML文档进行创建、读取、修改、查询及输出等操作。使用DOM4J解析XML文件可以方便地从XML文件读取数据、进行数据处理,并将处理的数据保存到指定的文件或数据源。 在使用DOM4J解析XML文件时,我们首先需要通过文档工厂类创建DOM4J的文档对象,然后就可以通过该文档对象获取XML文档的根节点,并对其进行遍历操作。 在遍历XML文档时,我们可以通过getElement()方法获取指定节点的子节点或属性节点,并通过getText()方法获取节点的文本内容。同样地,我们也可以使用XPath表达式来获取指定节点的数据。 除了读取XML文件,我们还可以使用DOM4J创建和修改XML文件。在创建XML文件时,我们可以通过创建根节点和子节点来构建整个XML文档,并使用输出流将其保存到指定位置。在修改XML文件时,我们可以通过获取指定节点并修改其内容来对XML文档进行更新。 总的来说,DOM4J是一种强大的XML文档操作工具包,它不仅提供了丰富的API函数,还支持XPath表达式和XSLT样式表,使得我们可以方便地对XML文档进行操作和处理。通过学习DOM4J,我们可以更好地掌握Java语言XML文档的读取、创建和修改等技术,从而更好地开发出高质量的Java应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jule_zhou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值