代码之家  ›  专栏  ›  技术社区  ›  u123

在运行时向xml添加节点?

  •  0
  • u123  · 技术社区  · 15 年前

    http://izpack.org/documentation/sample-install-definition.html

    在下面的范围中,将添加一个文件列表,并指定其是否应为“可分析的”(用于参数替换):

      <packs>
        <pack name="Main Application" required="yes" installGroups="New Application" >
              <file src="post-install-tasks.bat" targetdir="$INSTALL_PATH"/>
              <file src="build.xml" targetdir="$INSTALL_PATH"/>
              <parsable targetfile="$INSTALL_PATH/post-install-tasks.bat"/>
              <parsable targetfile="$INSTALL_PATH/build.xml"/>
        </pack>
      </packs>
    

    现在,每次运行应用程序时,必须添加到此作用域的文件数都可以更改。为了实现这一点,我考虑了以下方法:

    1) 将整个xml读入org.w3c.dom.*;文档,并根据读取目录的结果添加节点。

    2) 以某种方式将.properties文件中的内容添加到范围中。这样就可以在不重新编译代码的情况下更新文件列表。

    3) ??

    2 回复  |  直到 15 年前
        1
  •  1
  •   anirvan    15 年前

    如果您的XML配置可能非常大,那么使用基于DOM的方法确实不太好[因为加载大型XML文档会占用大量内存]

    你应该看看 StaX

        2
  •  1
  •   Alexander Torstling    15 年前

    3) 用修改后的新版本覆盖旧文件。DOM解析器保持注释的完整性,但最终可能会导致格式上的差异。要写入文件,请执行以下操作:

    Source source = new DOMSource(doc);
    File file = new File(filename);
    Result result = new StreamResult(file); 
    Transformer xformer = TransformerFactory.newInstance().newTransformer();
    xformer.transform(source, result);