[英]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.