gpt4 book ai didi

Java 将属性和值附加到现有 XML

转载 作者:行者123 更新时间:2023-11-28 22:47:18 25 4
gpt4 key购买 nike

我需要为 Apache tomcat 动态更新 server.xml 并添加新的属性和值。此 xml 文档包含许多具有相同名称属性的元素。例如,具有不同属性值的多个连接器元素。

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="${tomcat.http.port}"
connectionTimeout="${tomcat.connection.timeout}"
maxHttpHeaderSize="20480"
socket.soKeepAlive="true"
/>

<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
port="${tomcat.basic.https.port}"
socket.soKeepAlive="true"
SSLEnabled="true"
socket.appReadBufSize="17408"
scheme="https"
secure="true"
/>

我需要在端口值为 ${tomcat.basic.https.port} 的元素中添加一个新属性 where connector。

这是我到目前为止找到正确元素的结果。

    DocumentBuilderFactory docFactory = buildDocFact();
DocumentBuilder docBuilder = null;
Document doc = null;

File file = new File(filePath);
docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.parse(file);
doc.getDocumentElement().normalize();

XPath xpath = XPathFactory.newInstance().newXPath();
NodeList nodes =
(NodeList) xpath.evaluate("//*[contains(@port,
'${tomcat.basic.https.port}')]", doc,
XPathConstants.NODESET);

for (int idx = 0; idx < nodes.getLength(); idx++)
{
Node value =
nodes.item(idx).getAttributes().getNamedItem("port");
String val = value.getNodeValue();
logger.info(val);
}

所以 logger.info 打印出正确的值,所以我知道我在正确的元素中。

问题是如何将附加属性和值添加到该元素的末尾?

好像没有创建属性的功能。

一旦我们可以设置属性和值,我就可以轻松地将结果保存到新的 xml 文档中。

    Transformer xformer = TransformerFactory.newInstance().newTransformer();
xformer.transform(new DOMSource(doc), new StreamResult(new File(outputFile)));

有什么想法可以附加新的属性和值吗?

我希望这是有道理的:)

最佳答案

你可以尝试 ((Element)node).setAttribute("attributeName", "value");

关于Java 将属性和值附加到现有 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54772954/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com