4

我有一个看起来像这样的 xml 文件。员工.xml

<Employees>
    <Employee>
        <FirstName>myFirstName</FirstName>
        <LastName>myLastName</LastName>
        <Salary>10000</Salary>
    <Employee>
</Employees>

现在如何将新的 Employee 元素添加到现有的 XML 文件中?.. 示例代码非常感谢。

4

5 回答 5

6

您不能“将节点写入现有 XML 文件”。您可以将现有的 XML 文件读入内存,添加到数据模型中,然后写入一个新文件。您可以重命名旧文件并将新文件写入旧名称。但是没有常用的 Java 实用程序可以修改 XML 文件。

于 2012-06-09T15:47:57.127 回答
2

要添加到现有的 XML 文件,通常需要将其读入内部数据结构,以内部形式添加所需的数据,然后将其全部写入,覆盖原始文件。

内部结构可以是您自己制作的,也可以是DOM您自己制作的,并且有多种读入和写出的方法。

如果数据相当小,DOM 可能是最简单的,并且在这个相关问题的答案中有一些示例代码。

如果你的数据很大,DOM 就不行。可能的方法是使用 SAX 进行读取和写入(尽管 SAX 传统上只是一种读取机制),如对另一个相关问题的回答中所述。

您可能还想考虑JAXB或(甚至是最好的)StAX

于 2012-06-09T16:04:23.457 回答
2

请使用xstream将您的文件解析为对象,或创建一个包含员工的列表,然后您可以直接将其转换为 xml。

于 2012-06-09T15:36:58.030 回答
2

我认为此链接可能对您有用。

这里有示例如何读取/解析、修改(添加元素)和保存(再次写入 xml 文件)。

您可以在以下位置找到以下示例:http ://www.petefreitag.com/item/445.cfm

读:

DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse("/path/to/file.xml");

调整:

// attributes
Node earth = doc.getFirstChild();
NamedNodeMap earthAttributes = earth.getAttributes();
Attr galaxy = doc.createAttribute("galaxy");
galaxy.setValue("milky way");
earthAttributes.setNamedItem(galaxy);

// nodes
Node canada = doc.createElement("country");
canada.setTextContent("ca");
earth.appendChild(canada);

编写 XML 文件:

Transformer transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.INDENT, "yes");

//initialize StreamResult with File object to save to file
StreamResult result = new StreamResult(new StringWriter());
DOMSource source = new DOMSource(doc);
transformer.transform(source, result);

String xmlString = result.getWriter().toString();
System.out.println(xmlString);
于 2012-06-09T15:45:56.247 回答
1

您需要使用 DOM 来编写/编辑您的 xml 文件。
这很简单:
您只需要创建节点并为其添加属性。
您还可以使用 DOM 编写/编辑 XSLT 文件。
只需在 Google 上搜索 DOM java

于 2012-06-09T15:39:37.877 回答