2011-07-07 1 views
6

Я читаю xml-файл с SD-карты. Здесь я хочу изменить значения XML-файла, и я хочу сохранить файл на SD-карте.Как сохранить и обновить значения в XML-файле?

Мой код, как показано ниже .... Пожалуйста, расскажите, как сохранить XML-файл на SD-карту после обновление значений ..

public void modifyNodeval(){ 
     try{ 
     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
     Document doc = docBuilder.parse(new File("/sdcard/sss.xml")); 

     //Get the staff element by tag name directly 
     Node nodes = doc.getElementsByTagName("Employee").item(0); 
     //loop the staff child node 
     NodeList list = nodes.getChildNodes(); 

     for (int i =0; i<list.getLength();i++){ 
      Node node = list.item(i); 

      //get the salary element, and update the value 
      if("Emp_Name".equals(node.getNodeName())){ 
       node.setNodeValue("795796"); 
      } 
     } 

ответ

1

Что-то вроде этого:

Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
StreamResult result = new StreamResult(file); 
DOMSource source = new DOMSource(doc); 
transformer.transform(source, result); 
0

Этот метод записывает DOM документ в файл на SD-карту If вы хотите протестировать это в эмуляторе, убедитесь, что ваше AVD-изображение настроено с изображением SD-карты (сделано во время создания изображения).

public static void writeXmlFile(Document doc, String filename) { 
    try { 
     // Prepare the DOM document for writing 
     Source source = new DOMSource(doc); 

     File file new File(Environment.getExternalStorageDirectory(),fileName); 

     Result result = new StreamResult(file); 

     // Write the DOM document to the file 
     Transformer xformer = TransformerFactory.newInstance().newTransformer(); 
     xformer.transform(source, result); 
    } catch (TransformerConfigurationException e) { 
     // handle exception 
    } catch (TransformerException e) { 
     // handle exception 
    } 
}