gpt4 book ai didi

java - 我需要使用 Java 中的 DOM 将元素添加到 xml 文件

转载 作者:行者123 更新时间:2023-12-01 23:09:16 24 4
gpt4 key购买 nike

我在使用 Java 中的 DOM 向 xml 文件添加元素时遇到问题

我知道类似问题有很多解决方案,但我还没有成功地让它们为我工作,任何帮助将不胜感激。谢谢大家!

我当前添加新元素的方法

public static void createEntryXmlFile () {
try{
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document document = builder.parse(new File(FILE));


NodeList nodes = document.getElementsByTagName("CATALOG");


// cd elements
Element cd = document.createElement("CD");


// title elements
Element title = document.createElement("TITLE");
title.appendChild(document.createTextNode("TITLE"));
cd.appendChild(title);

// artist elements
Element artist = document.createElement("ARTIST");
artist.appendChild(document.createTextNode("ARTIST"));
cd.appendChild(artist);

// company elements
Element company = document.createElement("COMPANY");
company.appendChild(document.createTextNode("COMPANY"));
cd.appendChild(company);

// country elements
Element country = document.createElement("COUNTRY");
country.appendChild(document.createTextNode("COUNTRY"));
cd.appendChild(country);

// price elements
Element price = document.createElement("PRICE");
price.appendChild(document.createTextNode("PRICE"));
cd.appendChild(price);

// year elements
Element year = document.createElement("YEAR");
year.appendChild(document.createTextNode("YEAR"));
cd.appendChild(year);

Node n = (Element) cd;
nodes.item(0).appendChild(cd);


} catch (ParserConfigurationException | SAXException | IOException e) {
System.out.println(e);
}
}

XML 文件的副本

<CATALOG>
<CD>
<TITLE>Empire Burlesque</TITLE>
<ARTIST>Bob Dylan</ARTIST>
<COUNTRY>USA</COUNTRY>
<COMPANY>Columbia</COMPANY>
<PRICE>10.90</PRICE>
<YEAR>1985</YEAR>
</CD>
<CD>
<TITLE>Hide your heart</TITLE>
<ARTIST>Bonnie Tyler</ARTIST>
<COUNTRY>UK</COUNTRY>
<COMPANY>CBS Records</COMPANY>
<PRICE>9.90</PRICE>
<YEAR>1988</YEAR>
</CD>
</CATALOG>

最佳答案

您显示的代码会将现有的 XML 文件解析为内存中的 DOM 树,然后对该树进行更改,但修改内存中的树不会影响磁盘上的文件,您需要显式写入它自己退出。

最常见的两种方法是从 DOMSource 到 StreamResult 的无操作 Transformer,或者通过转换 document.getImplementation 使用 DOM“加载和存储”API ()DOMImplementationLS。由于 Transformer 方法使用 XSLT 基础结构,因此它可能无法与您正在使用的非命名空间感知 DOM 树很好地配合(DocumentBuilderFactory 默认情况下不感知命名空间) ,您必须显式配置它,以便在调用 newDocumentBuilder 之前),但 LS 方法肯定没问题,因为它完全是 DOM 库的一部分,不涉及转换层。

关于java - 我需要使用 Java 中的 DOM 将元素添加到 xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22271921/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com