如何使用Java将一个标签替换为XML中的另一个标签?

时间:2015-09-25 03:56:56

标签: java xml dom xpath xml-parsing

我有一个XML文件,如下所示,我需要用另一个标签替换标签:


minHand.contentsGravity = kCAGravityResizeAspect;
minHand.contentsScale = scale;

现在我想要这样的XML:您可以看到<?xml version="1.0" encoding='utf-8'?> <result> <!-- some xml data along with lot of other tags --> </result> 标记已替换为result标记,ClientHolder标记内的所有内容在result中都相同标签也是。

ClientHolder

到目前为止,这是我的代码,之后我无法理解如何使用Document对象执行上述操作:

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

1 个答案:

答案 0 :(得分:1)

您可以获取命名为result的所有节点,然后将其全部修改,重命名节点并添加其他属性:

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