【问题标题】:how to edit xml text value?如何编辑xml文本值?
【发布时间】:2011-07-07 10:35:19
【问题描述】:

我想修改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();
    }

【问题讨论】:

  • 你的代码有什么问题?此外,如果您更频繁地更新名称和其他标签,SQLiteDatabase 将更适合这项工作。
  • @prasad.gai 嗨,您好,很抱歉打扰您.. 只是,我有类似的问题,想请教您并提出建议。我的问题是,尝试上面的代码后,节点在SD卡中的xml文件的值没有改变。

标签: android xml text


【解决方案1】:

您的代码中存在问题:“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>");

【讨论】:

    【解决方案2】:

    有几个不同的示例可用。

    Writing XML on Android 这似乎有最好的样本。

    其他热门歌曲: How to rewrite or modify XML in android 2.1 version

    Load and modify xml file in Android

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-18
      • 2018-08-08
      • 2016-08-10
      • 1970-01-01
      • 1970-01-01
      • 2021-08-23
      相关资源
      最近更新 更多