以下完整示例将从当前目录中读取 现有
server.xml文件,追加新服务器,然后将文件重写为
server.xml。没有现有的.xml文件,该功能将无法正常运行,因此您需要修改代码以处理这种情况。
import java.util.*;import javax.xml.transform.*;import javax.xml.transform.stream.*;import javax.xml.transform.dom.*;import org.w3c.dom.*;import javax.xml.parsers.*;public class AddXmlNode { public static void main(String[] args) throws Exception { documentBuilderFactory documentBuilderFactory = documentBuilderFactory.newInstance(); documentBuilder documentBuilder = documentBuilderFactory.newdocumentBuilder(); document document = documentBuilder.parse("server.xml"); Element root = document.getdocumentElement(); Collection<Server> servers = new ArrayList<Server>(); servers.add(new Server()); for (Server server : servers) { // server elements Element newServer = document.createElement("server"); Element name = document.createElement("name"); name.appendChild(document.createTextNode(server.getName())); newServer.appendChild(name); Element port = document.createElement("port"); port.appendChild(document.createTextNode(Integer.toString(server.getPort()))); newServer.appendChild(port); root.appendChild(newServer); } DOMSource source = new DOMSource(document); TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); StreamResult result = new StreamResult("server.xml"); transformer.transform(source, result); } public static class Server { public String getName() { return "foo"; } public Integer getPort() { return 12345; } }}
示例 server.xml 文件:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><Servers> <server> <name>something</name> <port>port</port> </server></Servers>
对代码的主要更改是 未 创建新的“ root”元素。上面的示例仅使用现有节点中的当前根节点
server.xml,然后追加一个新的 Server
元素并重新写入该文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)