Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何修改XML节点值?_Android_Xml_Xmlnode - Fatal编程技术网

Android 如何修改XML节点值?

Android 如何修改XML节点值?,android,xml,xmlnode,Android,Xml,Xmlnode,我是java应用程序的新开发人员。我想修改一个XML文件节点值。我使用了一个xml文件进行如下修改 <staff id="2"> <firstname>yong</firstname> <lastname>mook kim</lastname> <nickname>mkyong</nickname> <salary>2000000</s

我是java应用程序的新开发人员。我想修改一个XML文件节点值。我使用了一个xml文件进行如下修改

  <staff id="2">
       <firstname>yong</firstname>
       <lastname>mook kim</lastname>
       <nickname>mkyong</nickname>
       <salary>2000000</salary>
       <age>28</age>
   </staff>
 try{
     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
     Document doc = docBuilder.parse(new File("/sdcard/myxml.xml"));

    //Get the staff element by tag name directly
     Node nodes = doc.getElementsByTagName("staff").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("salary".equals(node.getNodeName())){
             node.setNodeValue("345375");        
         }
     }
}
    catch (Exception e) {
        e.printStackTrace();
    }

勇
木金
mkyong
2000000
28
在上面的xml中,我想将工资值更改为345375。对于这个修改,我编写了如下代码

  <staff id="2">
       <firstname>yong</firstname>
       <lastname>mook kim</lastname>
       <nickname>mkyong</nickname>
       <salary>2000000</salary>
       <age>28</age>
   </staff>
 try{
     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
     Document doc = docBuilder.parse(new File("/sdcard/myxml.xml"));

    //Get the staff element by tag name directly
     Node nodes = doc.getElementsByTagName("staff").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("salary".equals(node.getNodeName())){
             node.setNodeValue("345375");        
         }
     }
}
    catch (Exception e) {
        e.printStackTrace();
    }
试试看{
DocumentBuilderFactory docFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder=docFactory.newDocumentBuilder();
documentdoc=docBuilder.parse(新文件(“/sdcard/myxml.xml”);
//直接按标记名获取staff元素
节点节点=doc.getElementsByTagName(“员工”)。项(0);
//循环staff子节点
NodeList list=nodes.getChildNodes();

对于(inti=0;i首先,您必须认识到
node.setValue()
正在修改存储在内存中的表示形式。知道了这一点,您只需了解如何将该输出写入磁盘。例如,请参阅。

对我来说似乎是正确的。您是否在终止程序之前保存了该文件?它可能会被丢弃。您能告诉我如何保存它吗?
node.Text = "Enter your value here"; //This will work