<?xml version="1.0" encoding="UTF-8"?>
<DbVisualizer>
<Databases>
<Database id="1">
<Alias>MyMssqlServer</Alias>
<Url />
<Driver>SQL Server (jTDS)</Driver>
<Userid>db_monitor</Userid>
<Profile>auto</Profile>
<Type>sqlserver</Type>
<Password>ABCDEFGHSIFJSDSDKJSD</Password>
<ServerInfoFormat>1</ServerInfoFormat>
<AutoDetectType>true</AutoDetectType>
<Properties>
<Property key="dbvis.ConnectionModeMigrated">true</Property>
</Properties>
<UrlFormat>0</UrlFormat>
<UrlVariables>
<Driver>
SQL Server (jTDS)
<UrlVariable UrlVariableName="Server">192.168.1.1</UrlVariable>
<UrlVariable UrlVariableName="Port">1433</UrlVariable>
<UrlVariable UrlVariableName="Database">abcdefg</UrlVariable>
</Driver>
</UrlVariables>
<SshSettings>
<SshEnabled>false</SshEnabled>
<SshHost />
<SshPort>22</SshPort>
<SshUserid />
<SshPassword />
<SshPrivateKeyFile />
<SshPassphrase />
</SshSettings>
</Database>
</DbVisualizer>
&#13;
我有一个为我生成新服务器的配置过程,上面有sqlserver,我需要在这个XML文件中添加属性,所以基本上我需要复制元素的部分&#34;数据库&#34;更改一些属性并在已存在的Database元素之后立即将其推送, 为此,我在外部文件中为此部分创建了一个模板,我正在改变我需要的内容,但是如何将整个部分附加到文件中,我知道我可以一次只做一个元素,但这就是很多元素所以我想在我所拥有的那一段之后推动整个部分:
<Database id="IDNUMBER">
<Alias>MACHINAME</Alias>
<Url />
<Driver>SQL Server (jTDS)</Driver>
<Userid>db_monitor</Userid>
<Profile>auto</Profile>
<Type>sqlserver</Type>
<Password>ABCDEFGHSIFJSDSDKJSD==</Password>
<ServerInfoFormat>1</ServerInfoFormat>
<AutoDetectType>true</AutoDetectType>
<Properties>
<Property key="dbvis.ConnectionModeMigrated">true</Property>
</Properties>
<UrlFormat>0</UrlFormat>
<UrlVariables>
<Driver>
SQL Server (jTDS)
<UrlVariable UrlVariableName="Server">MACHINEIP</UrlVariable>
<UrlVariable UrlVariableName="Port">1433</UrlVariable>
<UrlVariable UrlVariableName="Database">abcdefg</UrlVariable>
</Driver>
</UrlVariables>
<SshSettings>
<SshEnabled>false</SshEnabled>
<SshHost />
<SshPort>22</SshPort>
<SshUserid />
<SshPassword />
<SshPrivateKeyFile />
<SshPassphrase />
</SshSettings>
</Database>
&#13;
答案 0 :(得分:1)
我假设您在对象myDocument
中有一个主xml文档,它是类org.w3c.dom.Document
的一个实例,并且您在对象newDatabase
中有当前的模板实例,这是一个类org.w3c.dom.Node
的实例。
现在您必须从<Databases />
检索myDocument
节点并将newDataBase
节点附加到其中
NodeList nodes = myDocument.getElementsByTagName("Databases");
nodes.item(0).appendChild(newDataBase);
appendChild()方法在指定元素节点的最后一个子节点之后添加一个节点。
- 编辑:从文件中读取模板并获取可以执行的节点
FileInputStream fileInputStream = new FileInputStream(TEMPLATE_FILE_PATH);
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(fileInputStream);
Node newDataBase = document.getDocumentElement();
- 第二次编辑:在将newDataBase
节点附加到myDocument
之前,您必须复制
节点并将节点的所有权转移到目标文档中
代码行:
Node newNode = myDocument.importNode(newDataBase, true);
然后您可以使用之前的代码将newNode
附加到myDocument
。