如何用新值替换XML标记之间的旧值

时间:2013-03-05 02:32:18

标签: java xml setattribute

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

myfile.xml

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

replace.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。但是,这对我不起作用。


    

2 个答案:

答案 0 :(得分:3)

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

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

oldValueTextContent元素的<date>,不是属性。检查here以查找属性。

答案 1 :(得分:2)

如果设置属性,则更改节点根的属性,因此它将类似于<root attrName = "attrValue"&gt;

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

Problems setting a new node value in java, dom, xml parsing
dynamically set value to xml using jdom