how to update xml file from another xml file dynamically?

匿名 (未验证) 提交于 2019-12-03 09:06:55

问题:

I would like to update an xml file from another xml file.I have used an xml file as shown below:

one.xml

    

two.xml as follows:

      

from the above two xml files i would like to change the attribute value one. xml when if

  

from two.xml then I would like to update one.xml file as where LinearLayout android:id="@+id/linearLayout1" then change the attribute value as android:visibility="gone".

回答1:

Here is code what you want it's

    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);

/** * Logic for checking **/

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;                                           }                                 }  }

/** * Logic for reading one.xml and setting android:visibility="gone" **/

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");                         }                                            }                               }  }

/** * Logic for rewriting one.xml **/

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);


易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!