【问题标题】:How to replace old value between XML tags with new value如何用新值替换 XML 标记之间的旧值
【发布时间】:2013-02-19 07:46:20
【问题描述】:

我必须将日期标签中的 oldValue 替换为以下 XML 中的 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。但是,这对我不起作用。


【问题讨论】:

  • 打开和关闭 XML 标记之间的文本不是属性。就是内容。
  • @Code-Guru 你是对的。我对内容的属性感到困惑。

标签: java xml setattribute


【解决方案1】:

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

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

oldValueTextContent&lt;date&gt; 元素,而不是属性。检查here 以查找属性。

【讨论】:

  • 谢谢,帮了大忙。
【解决方案2】:

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

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

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

【讨论】:

  • 感谢@Alexey,这些链接很有帮助。
猜你喜欢
  • 1970-01-01
  • 2011-01-07
  • 2018-09-08
  • 2010-12-10
  • 2013-05-04
  • 2023-03-28
  • 2013-11-19
  • 1970-01-01
  • 2019-01-09
相关资源
最近更新 更多