【问题标题】:How to replace one tag with another tag in XML using Java?如何使用 Java 将一个标签替换为 XML 中的另一个标签?
【发布时间】:2015-12-22 20:02:47
【问题描述】:

我有一个如下所示的 XML 文件,我需要将其中的一个标签替换为另一个标签:

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

【问题讨论】:

标签: java xml dom xpath xml-parsing


【解决方案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);

【讨论】:

    猜你喜欢
    • 2011-10-28
    • 2015-06-24
    • 2013-11-23
    • 2013-04-23
    • 1970-01-01
    • 2015-09-19
    • 1970-01-01
    • 2014-07-09
    相关资源
    最近更新 更多