如何使用java写入现有的XML文件

时间:2012-06-09 15:34:00

标签: java xml

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

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

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:2)

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

答案 2 :(得分: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);

答案 3 :(得分:2)

要添加到现有XML文件,通常需要将其读入内部数据结构,在内部表单中添加所需数据,然后再将其全部写出,覆盖原始文件。

内部结构可以是DOM或您自己制作的内容,并且有多种方法可以将其读入并写出来。

如果数据相当小,DOM可能最简单,this related question的答案中有一些示例代码。

如果您的数据很大,那么DOM就不会这样做。可能的方法是使用SAX进行读写(尽管SAX传统上只是一种读取机制),如another related question的答案所述。

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

答案 4 :(得分:1)

您需要使用DOM来编写/编辑您的xml文件 这很容易:
您只需要创建节点并为其添加属性 您也可以使用DOM编写/编辑XSLT文件 只需搜索谷歌搜索DOM java