2013-03-05 2 views
1

Я должен заменить oldValue в теге даты newValue в нижнем XML-документе. Я использую функцию setAttribute, чтобы сделать это, но она не работает. Пожалуйста, дайте мне знать, если мне нужно использовать другую функцию для замены текста между тегами.Как заменить старое значение между XML-тегами на новое значение

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 

С большим реак ding/эксперимент, я нашел setAttribute() работает для замены XML как это. Но это не работает для меня.


+1

Текст между открытым и закрытым тегом XML - это * не * атрибут. Это контент. –

+0

@ Code-Guru Вы правы. Я вводил в заблуждение атрибут для контента. – JoshMachine

ответ

2

Вам нужно setTextContent(String textContent) метод и не setAttribute метод.

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

oldValue является TextContent из <date> элемента, а не атрибутов. Проверьте here, чтобы найти атрибут.

+1

Спасибо, это очень помогло. – JoshMachine

2

Если установить атрибут изменить атрибут корневого узла, так что это будет как <root attrName = "attrValue">

Есть вопросы, которые могут помочь вам найти ответ.

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

+0

Благодаря @Alexey эти ссылки были полезны. – JoshMachine

Смежные вопросы