2015-09-25 149 views
1

我有如下圖所示的,我需要用另一個標籤更換標籤的XML文件:如何用XML中的另一個標籤替換一個標籤使用Java?

<?xml version="1.0" encoding='utf-8'?> 

<result> 

    <!-- some xml data along with lot of other tags --> 

</result> 

現在我想這個XML是這樣的:正如你所看到result代碼被替換ClientHolder標籤其他result標籤中的其他內容也與ClientHolder標籤相同。

<?xml version="1.0" encoding='utf-8'?> 

<ClientHolder xmlns="http://www.host.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.host.com model.xsd"> 

    <!-- some xml data along with lot of other tags --> 

</ClientHolder> 

這裏是我到目前爲止的代碼後,我無法理解如何使用Document對象上面做的東西:

String fileName = location + "/" + "client_" + clientId + ".xml"; 
File clientFile = new File(fileName); 
Document doc = parseXML(clientFile); 

// now how to use doc object? 
+0

好問題。我不知道你的問題。 – T8Z

+2

檢查http://stackoverflow.com/questions/1299926/changing-node-name-of-xml-node-with-java – user2953113

回答

1

你可以得到所有命名爲結果,節點,然後修改它們,重命名節點和添加附加屬性:

NodeList nodes = doc.getElementsByTagName("result"); 
for (int i = 0; i < nodes.getLength(); i++) { 
    Node node = nodes.item(i); 
    doc.renameNode(node, null, "ClientHolder"); 
    Element element = (Element) node; 
    element.setAttribute("xmlns", "http://www.host.com"); 
    element.setAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance"); 
    element.setAttribute("xsi:schemaLocation", "http://www.host.com model.xsd"); 
} 

這裏是進口:

import org.w3c.dom.Document; 
import org.w3c.dom.Element; 
import org.w3c.dom.Node; 
import org.w3c.dom.NodeList; 

這是你如何可以將它保存到文件:

Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
Result output = new StreamResult(clientFile); 
Source input = new DOMSource(doc); 
transformer.transform(input, output); 
相關問題