¿Cómo editar el valor de un nodo de un archivo XML existente de una tarjeta SD y guardarlo de nuevo?
Quiero editar el valor de un nodo de un archivo XML existente de la tarjeta SD.
Por ejemplo, si quiero editar el valor de RouteName
de Mountain Trip a Sea Trip .
- org.w3c.dom.Node con la versión de Android menos de 2.2
- Eclipse falta las fichas de diseño gráfico y de origen al editar archivos XML de Android
- El método más simple para convertir Json a Xml
- Android: Cómo crear CursorAdapter desde los datos en un archivo XML
- Cambiar (Pulgar y Seguir) Android
<Trip> <RouteID>12345</RouteID> <RouteName>Mountain Trip</RouteName> </Trip>
Intento utilizar el código siguiente pero no hace efecto al archivo de XML en la tarjeta del SD.
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(); }
¿Por qué no se actualiza el archivo XML de la tarjeta SD?
- ¿Interrupción de línea en formato XML?
- No solicite problema Window.FEATURE_ACTION_BAR
- No se puede hacer referencia al tema Holo desde valores-v11 / themes.xml
- RadioGroup extendiendo RelativeLayout?
- Cómo agregar TableRow de xml a TableLayout mediante programación?
- Barra de búsqueda personalizada tiene una brecha entre el pulgar y el progreso
- ¿Cómo recuperar partes del contenido de Wikipedia en la aplicación para Android?
- Android obtiene una lista de colores de los recursos
Finalmente obtuve la respuesta de aquí , gracias ProfSmiles.
La corrección fue un cambio de nodes.setNodeValue
a nodes.setTextContent
.
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(); }