当前位置: 首页> 文旅> 酒店 > dom4j 操作 xml 之按照顺序插入标签

dom4j 操作 xml 之按照顺序插入标签

时间:2025/7/13 6:53:55来源:https://blog.csdn.net/qq_66452396/article/details/140485450 浏览次数:0次

      最近学了一下 dom4j 操作 xml 文件,特此记录一下。

 

public class Dom4jNullTagFiller {public static void main(String[] args) throws DocumentException {SAXReader reader = new SAXReader();//加载 xml 文件Document document = reader.read("C:\\Users\\24596\\Desktop\\test.xml");//首先获取根元素,然后调用 element 或者 elements 方法获取子元素Element root = document.getRootElement();// 获取名为 EInvoiceData 的子元素Element eInvoiceData = root.element("EInvoiceData");//因为需要按照顺序插入标签,所以应该定义好标签的顺序,便于查找之前的标签,并在对应位置插入当前标签String[] tagNames = {"ItemName", "SpecMod", "MeaUnits", "Quantity", "UnPrice", "Amount","TaxRate", "ComTaxAm", "TotaltaxIncludedAmount", "TaxClassificationCode"};//获取 EInvoiceData 下的名为 IssuItemInformation 的元素列表,因为 EInvoiceData 下有多个 IssuItemInformation ,每个 IssuItemInformation 都需要进行操作,当前也可以获取指定索引的 IssuItemInformation 元素List<Element> issuItemInformations = eInvoiceData.elements("IssuItemInformation");// 遍历 IssuItemInformation 元素for (Element issuItemInformation : issuItemInformations) {// 获取 issuItemInformation 下的子元素,方便获取元素的一些信息,比如索引List<Element> list = issuItemInformation.elements();//因为从1开发,所以需要对索引位置为0的 ItemName 标签进行特殊处理if(issuItemInformation.element("ItemName")==null){list.add(DocumentHelper.createElement("ItemName").addText(""));}// 遍历判断 tagNames 中定义的标签是否为空,如果为空,需要按照顺序插入空标签for (int i = 1; i < tagNames.length; i++) {Element element = issuItemInformation.element(tagNames[i]);if (element == null) {Element newElement = DocumentHelper.createElement(tagNames[i]).addText("");// 获取前一个标签的位置,在后面插入空标签list.add(list.indexOf(issuItemInformation.element(tagNames[i-1])) + 1,newElement);}}}//这里可以调用 document.asXML() 方法在控制台打印 改变之后的 xml 数据//System.out.println(document.asXML());// 生成新的 XML 文件OutputFormat format = OutputFormat.createPrettyPrint();XMLWriter writer;try (FileWriter fileWriter = new FileWriter("C:\\Users\\24596\\Desktop\\new.xml")) {writer = new XMLWriter(fileWriter, format);writer.write(document);} catch (IOException e) {e.printStackTrace();}}
}

以上添加了详细注释的代码,读者可以直接拿来用,需要修改的部分是获取指定元素的名称以及 tagNames 数组。下面展示一下效果图片:

原 xml 文件:

修改之后的 xml 文件:

如果能给你带来帮助,那将是我的荣幸

关键字:dom4j 操作 xml 之按照顺序插入标签

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: