Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/190.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
Java 如何从另一个xml文件动态更新xml文件?_Java_Android_Xml_Updatexml - Fatal编程技术网

Java 如何从另一个xml文件动态更新xml文件?

Java 如何从另一个xml文件动态更新xml文件?,java,android,xml,updatexml,Java,Android,Xml,Updatexml,我想从另一个xml文件更新一个xml文件。我使用了一个xml文件,如下所示: one.xml <?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent

我想从另一个xml文件更新一个xml文件。我使用了一个xml文件,如下所示:

one.xml

    <?xml version="1.0" encoding="utf-8"?>
   <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:background="#00BFFF">   
   <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">
<LinearLayout
    android:id="@+id/linearLayout1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:gravity="center" android:visibility="visible">
</LinearLayout>
<LinearLayout
    android:id="@+id/linearLayout2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:gravity="center" android:visibility="visible">

</LinearLayout>

</LinearLayout>
</ScrollView>

two.xml如下所示:

      <?xml version='1.0' encoding='utf-8' standalone='yes' ?>
       <map>
      <int name="linearLayout1" value="8" />
      <int name="linearLayout2" value="0" />
      </map>


从以上两个xml文件中,我想将属性值更改为1。xml何时 如果



two.xml开始,我想将one.xml文件更新为where LinearLayoutandroid:id=“@+id/linearLayout1”然后将属性值更改为android:visibility=“gone”

这是您想要的代码

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse("/home/riddhish/developerworkspace/SplitString/src/com/updatexmlwithjava/two.xml");           
    DocumentTraversal traversal = (DocumentTraversal) doc;
    Node a = doc.getDocumentElement();
    NodeIterator iterator = traversal.createNodeIterator(a, NodeFilter.SHOW_ELEMENT, null, true);
/** *检查逻辑 **/

/** *读取one.xml并设置android:visibility=“gone”的逻辑 **/

/** *重写one.xml的逻辑 **/


这是你想要的代码

    DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
    Document doc = docBuilder.parse("/home/riddhish/developerworkspace/SplitString/src/com/updatexmlwithjava/two.xml");           
    DocumentTraversal traversal = (DocumentTraversal) doc;
    Node a = doc.getDocumentElement();
    NodeIterator iterator = traversal.createNodeIterator(a, NodeFilter.SHOW_ELEMENT, null, true);
/** *检查逻辑 **/

/** *读取one.xml并设置android:visibility=“gone”的逻辑 **/

/** *重写one.xml的逻辑 **/


“如果**从**2.xml更改属性值one.xml”,解释更多信息。我想更新one.xml文件如果是windows,您的平台是什么?使用“\\”读取文件会发生什么,这不是您想要的代码?“如果**从**2.xml更改属性值one.xml”,解释更多信息。我想更新一个.xml文件如果是windows,你的平台是什么?使用“\\”读取文件会发生什么,这不是你想要的代码?谢谢你的回答,但它只适用于linearLayout1。如果有人修改了2.xml,那么我们应该如何动态编写。你有getAttribute(),GetTaName(),getTextContent()用于动态检查属性值,因此这取决于您的逻辑设置方式。感谢您的回答,但它仅适用于linearLayout1。如果有人修改了two.xml,那么我们应该如何动态编写。您可以使用getAttribute()、getTagName()、getTextContent()动态检查属性值,所以,这取决于你的逻辑,你想如何设置。
boolean flag=false;
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
       Element e = (Element) n;                
            if ("int".equals(e.getTagName())) {
                if(e.getAttribute("name").equals("linearLayout1")){
                        if(e.getAttribute("value").equals("8"))
                            flag=true;                      
                    }                    
            } 
}
docFactory = DocumentBuilderFactory.newInstance();
docBuilder = docFactory.newDocumentBuilder();
doc = docBuilder.parse("/home/riddhish/developerworkspace/SplitString/src/com/updatexmlwithjava/one.xml");           
traversal = (DocumentTraversal) doc;
a = doc.getDocumentElement();
iterator = traversal.createNodeIterator(a, NodeFilter.SHOW_ELEMENT, null, true);            
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {
      Element e = (Element) n;                
          if ("LinearLayout".equals(e.getTagName())) {
                if(e.getAttribute("android:id").equals("@+id/linearLayout1")){
                        if(flag==true){
                            System.out.println(""+e.getAttribute("android:visibility"));
                            e.setAttribute("android:visibility", "gone");
                        }                           
                }                    
          } 
}
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(new File("/home/riddhish/developerworkspace/SplitString/src/com/updatexmlwithjava/one.xml"));
iterator = traversal.createNodeIterator(a, NodeFilter.SHOW_ELEMENT, null, true);          
doc = docBuilder.newDocument();
Element rootElement = doc.createElement("ScrollView");
doc.appendChild(rootElement);
for (Node n = iterator.nextNode(); n != null; n = iterator.nextNode()) {               
        rootElement.appendChild(doc.importNode(n, true));
}
transformer.transform(source, result);