在java中向现有的XML节点添加新属性?

2022-09-03 04:11:35

我想向现有的 xml 节点添加一个属性。我不想向我的xml文件添加新元素(新节点),我只想添加一个新属性。我该怎么做?

特别是我尝试了这行代码:

Element process = doc.getElementsById("id");
    process.setAttribute("modelgroup", "");

TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new  File("C:\\Users\\Blerta\\workspaceKEPLER\\XML_to_JSON\\SampleExample.xml"));
transformer.transform(source, result);

但我得到以下例外:

Exception in thread "main" java.lang.NullPointerException
    at Main.appendAttributes(Main.java:172)
    at Main.displayNodes(Main.java:65)
    at Main.displayNodes(Main.java:138)
    at Main.main(Main.java:42)**

答案 1

在DOM解析器中,这很容易。获取您的节点,然后简单地使用此功能。

((Element)node).setAttribute("attr_name","attr_value");

然后最终更新您的文档。喜欢这个。。

        Transformer transformer = TransformerFactory.newInstance().newTransformer();
        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "5");
        DOMSource source = new DOMSource(document);
        StreamResult result = new StreamResult(new File(tablePath));
        transformer.transform(source, result);

答案 2

最简单和最短的是将节点转换为 org.w3c.dom.Element,然后在其上调用 setAttribute

((Element)aNode).setAttribute("name", "value");

推荐