Как редактировать текстовое значение XML?

1

я хотел бы изменить текст значения тега xml, я использовал xml следующим образом

  <note>
       <to>Tove</to> 
       <from>Jani</from> 
       <heading>Reminder</heading> 
       <body>Don't forget me this weekend!</body> 
 </note>

здесь я хотел бы изменить имя от Jani как prasad. Как я могу это понять, используя код Java

Я написал код Java следующим образом

 try{
     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
     Document doc = docBuilder.parse(new File("/mnt/sdcard/one.xml"));

    //Get the staff element by tag name directly
     Node nodes = doc.getElementsByTagName("note").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("from".equals(nodes.getNodeName())){
             node.setNodeValue("prasad");

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

             DOMSource source = new DOMSource(doc);
             StreamResult result = new StreamResult(new File("/mnt/sdcard/one.xml"));
             transformer.transform(source, result);


         }
     }

}
    catch (Exception e) {
        e.printStackTrace();
    }
  • 0
    В чем проблема с вашим кодом? Кроме того, если вы будете обновлять имена и другие теги чаще, SQLiteDatabase лучше подойдет для этой работы.
  • 0
    @prasad.gaiprasad.gai Привет, привет, извините за беспокойство ... просто, у меня есть такая же проблема, как и у вас, я хотел бы спросить вас и дать совет. Моя проблема заключается в том, что после попытки выполнения приведенного выше кода значение узла XML-файла на SD-карте не изменяется.
Теги:
text

2 ответа

2
Лучший ответ

В вашем коде есть проблема: "Jani" - это текстовый узел с родительским элементом "from". Поэтому вы должны изменить значение текстового узла.

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

         //get the salary element, and update the value
         if("from".equals(node.getNodeName())){
             Text text = (Text) ((Element) node).getChildNodes().item(0);
             text.setNodeValue("prasad");
         }
     }

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

     DOMSource source = new DOMSource(doc);
     StreamResult result = new StreamResult(new File("/mnt/sdcard/one.xml"));
     transformer.transform(source, result);
...

И я думаю, что RegExp будет намного проще для этой задачи

"your xml as string".replaceAll("<from>.*?</from>", "<from>prasad</from>");
  • 0
    спасибо за ваше решение RegExp, действительно полезно,
0

Существует несколько различных примеров.

Написание XML на Android Это, кажется, лучшие образцы.

Другие хиты: как переписать или изменить XML в версии Android версии 2.1

Загрузка и изменение xml файла в Android

Ещё вопросы

Сообщество Overcoder
Наверх
Меню