2012-01-24 18 views
7

Varolan bir XML dosyasının bir düğümün değerini SD karttan düzenlemek istiyorum. ÖrneğinBir SD karttan düğümün mevcut bir XML dosyasının değeri nasıl düzenlenir ve geri kaydedilir?

Ben Deniz Trip-Dağ Trip den RouteName 'ın değerini düzenlemek istiyorum.

<Trip> 
    <RouteID>12345</RouteID> 
    <RouteName>Mountain Trip</RouteName> 
</Trip> 

Aşağıdaki kodu kullanmaya çalışıyorum ancak SD kartındaki XML dosyasına etki etmiyor.

try { 
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
    Document doc = docBuilder.parse(
     new File(Environment.getExternalStorageDirectory()+"/Trip/"+tripID+".trip")); 

    Node nodes = doc.getElementsByTagName("RouteName").item(0); 
    // newname is String variable which retrives value from edittext 
    nodes.setNodeValue(newname); 

    TransformerFactory factory = TransformerFactory.newInstance(); 
    Transformer transformer = factory.newTransformer(); 

    DOMSource source = new DOMSource(doc); 
    StreamResult result = new StreamResult(
     new File(Environment.getExternalStorageDirectory()+"/Trip/"+tripID+".trip")); 
    transformer.transform(source, result); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

SD karttaki XML dosyası neden güncellenmiyor?

cevap

10

Sonunda here cevabını aldım, teşekkürler ProfSmiles. Düzeltme, nodes.setNodeValue ile nodes.setTextContent arasında bir değişiklik oldu.

try { 
    String filePath = Environment.getExternalStorageDirectory()+"/Trip/"+tripID+".trip"; 
    File file = new File(filePath); 
    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 
    Document doc = docBuilder.parse(file); 

    // Change the content of node 
    Node nodes = doc.getElementsByTagName("RouteName").item(0); 
    // I changed the below line form nodes.setNodeValue to nodes.setTextContent 
    nodes.setTextContent(newname); 

    Transformer transformer = TransformerFactory.newInstance().newTransformer(); 
    transformer.setOutputProperty(OutputKeys.INDENT, "yes"); 

    // initialize StreamResult with File object to save to file 
    StreamResult result = new StreamResult(file); 
    DOMSource source = new DOMSource(doc); 
    transformer.transform(source, result); 

} catch (Exception e) { 
    e.printStackTrace(); 
} 
İlgili konular