我想从另一个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文件我想改变一个属性值. xml什么时候
如果
<int name ="linearLayout1" value = "8"/>
从two.xml然后我想更新one.xml文件,因为linearLayout androID: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);
/ **
*检查逻辑
** /
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; } } }
/ **
*读取one.xml并设置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"); } } } }
/ **
*重写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);
总结 以上是内存溢出为你收集整理的java – 如何动态更新另一个xml文件中的xml文件?全部内容,希望文章能够帮你解决java – 如何动态更新另一个xml文件中的xml文件?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)