gpt4 book ai didi

java - 在 Java 中修改 XML

转载 作者:行者123 更新时间:2023-12-01 13:04:45 26 4
gpt4 key购买 nike

我有一个 XML 文档,其值标记中包含空值(类似于下面的内容)

  <ns2:Attribute Name="Store" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<ns2:AttributeValue/>
</ns2:Attribute>

现在,我必须编写 Java 代码来修改以下值。

  <ns2:Attribute Name="Store" NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
<ns2:AttributeValue>ABCDEF</ns2:AttributeValue>
</ns2:Attribute>

我正在使用 DOM 解析器来解析 XML。我可以删除 "的空标签,但无法添加新值。我什至不确定我们是否有直接的方法来替换或添加值。

下面是我用来删除子项的代码(“”)

    Node aNode = nodeList.item(i);
eElement = (Element) aNode;
eElement.removeChild(eElement.getFirstChild().getNextSibling());

提前致谢

最佳答案

只需通过setTextContent向元素添加数据即可。示例代码如下:

public static void main(String[] args) throws IOException, SAXException, ParserConfigurationException, TransformerException {
String xml = "<ns2:Attribute Name=\"Store\" NameFormat=\"urn:oasis:names:tc:SAML:2.0:attrname-format:uri\"><ns2:AttributeValue/></ns2:Attribute>";
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(new ByteArrayInputStream(xml.getBytes()));
doc.getDocumentElement().normalize();
NodeList nList = doc.getElementsByTagName("ns2:AttributeValue");
for (int i=0;i<nList.getLength();i++) {
Element elem = (Element)nList.item(i);
elem.setTextContent("Content"+i);
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(System.out);

transformer.transform(source, result);



System.out.println(nList.getLength());
}

关于java - 在 Java 中修改 XML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23350907/

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