1

我必须用下面的 XML替换oldValue日期标记中的。newValue我正在使用setAttribute函数来做到这一点,但它似乎不起作用。如果我必须使用不同的功能来替换标签之间的文本,请告诉我。

我的文件.xml

<?xml version="1.0" encoding="UTF-8" ?>  
<root>  
        <date>oldValue</date>  
</root>

替换.java

Document doc = builder.parse(new File("myFile.xml"));  
Element root = doc.getDocumentElement();  
System.out.println("Before");  
System.out.println("Using getElementByTagName date: " + root.getElementsByTagName("date").item(0).getTextContent());  
System.out.println("Using getAttribute        date: " + root.getAttribute("date"));
root.setAttribute("date", "newValue");  
System.out.println("After");  
System.out.println("Using getElementByTagName date: " + root.getElementsByTagName("date").item(0).getTextContent());  
System.out.println("Using getAttribute        date: " + root.getAttribute("date"));

输出:

**Before**  
 Using getElementByTagName date: oldValue  
 Using getAttribute        date:  
 **After**  
 Using getElementByTagName date: oldValue  
 Using getAttribute        date: test  

通过大量阅读/实验,我找到setAttribute()了像这样替换 XML 的工作。但是,这对我不起作用。


4

2 回答 2

4

您需要setTextContent(String textContent)方法而不是setAttribute方法。

root.getElementsByTagName("date").item(0).setTextContent("newValue");

oldValue是元素,TextContent<date>不是属性。在这里查看什么是属性。

于 2013-03-05T02:42:10.097 回答
2

如果你设置属性你改变节点根的属性,所以它会像<root attrName = "attrValue">

有些问题可以帮助您找到答案。

在 java、dom、xml 解析中设置新节点值时出现问题,
使用 jdom 将值动态设置为 xml

于 2013-03-05T02:39:34.100 回答