簡體   English   中英

在運行時將節點添加到xml?

[英]Add nodes to an xml at runtime?

我正在編寫一個應用程序,該應用程序必須根據目錄中的一組文件來更新已經存在的xml文件的部分。 可以在下面看到此xml文件的示例:

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)??

有什么建議可以很好地解決此類任務嗎?

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); 

如果您的XML配置可能有很大的規模,那么繼續使用基於DOM的方法確實不好(由於加載大XML文檔的相關內存占用)

您應該看看StaX 它具有用於解析和編寫XML文檔的高度優化的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM