【问题标题】:Write to end of xml file using java使用java写入xml文件的末尾
【发布时间】:2014-06-30 01:39:00
【问题描述】:

下面有一个现有的 XML 文件,我想使用 Java 写入该文件。我正在尝试在其中添加另一个带有文件和版本 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 来获取最后一个资源节点。一旦我得到它,我就会在其中附加一个新的模式节点,其中包含我的新文件和版本 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);

【问题讨论】:

  • 请注意,简单地附加到一个 XML 文件不会给你一个有效的 XML 文件,因为你需要只有一个根元素。您需要读入旧版本,进行更改,然后将其写回,无论是流式传输还是通过 DOM 操作。
  • 好吧,这就是我目前正在做的事情

标签: java xml parsing dom append


【解决方案1】:

我会使用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 文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-03
    • 2014-10-26
    • 1970-01-01
    • 2014-02-04
    • 2011-04-14
    • 2023-01-11
    相关资源
    最近更新 更多