使用java写入xml文件的末尾

时间:2014-05-12 15:41:33

标签: java xml parsing dom append

我有一个现有的XML文件,我想用Java编写。我正在尝试添加另一个带有file和version-id的模式元素。我正在做的是从最后一个模式元素中提取file和version-id的值,然后增加这些值的版本号。我已经成功地完成了这项工作,并设置了新的文件和版本值。我现在需要将它们添加到新模式元素下的xml中。

  <?xml version="1.0" encoding="UTF-8"?>
    <jnlp-versions>
      <resource>
        <pattern>
            <file>somejar_2_100_1_client.jar</file>
            <version-id>2.100.1</version-id>
        </pattern>
        <pattern>
            <file>somejar_2_100_2_client.jar</file>
            <version-id>2.100.2</version-id>
        </pattern>
        <name>jarclient.jar</name>
       </resource>
    </jnlp-versions>

*****编辑:

我使用xPath获取最后一个资源Node。一旦我得到了它,然后在我的新文件和版本ID标签中添加一个新的模式节点。

Node resourceNode = (Node)xPath.evaluate("/jnlp-versions/resource[last()]",doc.getDocumentElement(), XPathConstants.NODE);

    Element fileNode = doc.createElement("file");
    Element versionNode = doc.createElement("version-id");

    fileNode.setTextContent(newFileName);
    versionNode.setTextContent(newVersion);

    Element patternNode = doc.createElement("pattern");
    patternNode.appendChild(fileNode);
    patternNode.appendChild(versionNode);
    resourceNode.appendChild(patternNode);

1 个答案:

答案 0 :(得分:0)

我会使用XStream库和alises将XML映射到java类并返回。首先,创建一个与XML匹配的java类,例如:

class JnlpVersions {
  Resource resource;
}

class Resource {
 String name;
 Set<Pattern> patterns;
}

class Pattern {
  String file;
  String versionId;
}

然后将现有的xml文件加载到JnlpVersion的实例中。获取其resource并向其添加新的Pattern。然后,使用XStream将实例保存到新的xml文件。