我有一个看起来像这样的xml文件。 employees.xml
<Employees>
<Employee>
<FirstName>myFirstName</FirstName>
<LastName>myLastName</LastName>
<Salary>10000</Salary>
<Employee>
</Employees>
现在如何将新的Employee元素添加到现有的XML文件中?示例代码非常受欢迎。
答案 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的答案所述。
答案 4 :(得分:1)
您需要使用DOM来编写/编辑您的xml文件
这很容易:
您只需要创建节点并为其添加属性
您也可以使用DOM编写/编辑XSLT文件
只需搜索谷歌搜索DOM java