我必须使用以下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。但是,这对我不起作用。
答案 0 :(得分:3)
您需要setTextContent(String textContent)方法,而不是setAttribute
方法。
root.getElementsByTagName("date").item(0).setTextContent("newValue");
oldValue
是TextContent
元素的<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