Как редактировать текстовое значение XML? - PullRequest
1 голос
/ 07 июля 2011

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

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

здесь я хотел бы изменить имя пользователя Jani как прасад . Как я могупредположим, что с помощью кода 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();
    }

Ответы [ 2 ]

2 голосов
/ 07 июля 2011

В вашем коде есть проблема: «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 голосов
/ 07 июля 2011

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...