2015-05-16 3 views
0

Я правильно читаю xml-файл, но я не могу его написать.Java DocumentBuilder не обновляет xml-файл

Вот файл: файл конфигурации для значений ключа.

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <setting key="Password" value="d92e1dedba95d2cf00d4c567e57e3342"/> 
    <setting key="ExceptionFileLog" value="exception.txt"/> 
    <setting key="ActionFileLog" value="actions.txt" /> 
    <setting key="ShowInfoMessage" value="false" /> 
</configuration> 

я правильно открыть и прочитать файл с помощью javax.xml.parsers.DocumentBuilder:

private Document _doc = null; 

public XmlConfig(String filePath) throws Exception 
{ 
    File xml = new File(filePath); 
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    _doc = dBuilder.parse(xml); 
    _doc.getDocumentElement().normalize(); 
} 

До сих пор так хорошо, но я не в состоянии писать и сохраняются изменения в файле:

public boolean updateValue(String key, String value) 
{ 
    NodeList settlist = _doc.getElementsByTagName(SETTNAME); 
    for(int i = 0; i < settlist.getLength(); i++) 
    { 
     Element sett = (Element) settlist.item(i); 
     if(sett.getNodeType() == Node.ELEMENT_NODE) 
     { 
      if(null != sett.getAttribute("key") && sett.getAttribute("key").equals(key)) 
      { 
       sett.setAttribute("value", value); 
       return true; 
      } 
     } 
    } 
    return false; 
} 

Итак, если я печатаю xml-файл из _doc (объект Document), изменения корректно записываются, но файл xml не обновляется!

Я полагаю, что я открываю, читаю и пишу xml-файл в памяти, и мне нужен способ сохранения изменений на диске. Я понятия не имею, любое предложение будет оценено.

+0

вы не хранящего XML file..all изменений остается в самой памяти .. – ELITE

ответ

0

сохранить измененный файл XML, используя следующий код

Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
Result output = new StreamResult(xml); // xml is a object of File i.e. File xml = new File(filePath); 
Source input = new DOMSource(_doc); 
transformer.transform(input, output); 

он будет хранить обновленные значения в файле XML.

справка из how-to-save-parsed-and-changed-dom-document-in-xml-file

+0

Это работает! Благодаря! Я это предположил, но я не знаю, как это сделать. Я новичок в java ... – insilenzio

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