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

我想从另一个xml文件更新一个xml文件。我使用了一个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>

如下:

      <?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"/>

从 然后我想将 文件更新为LinearLayout 然后将属性值更改为 。

回答:

这是您想要的代码

    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;

}

}

}

/ /

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

以上是 如何从另一个xml文件动态更新xml文件? 的全部内容, 来源链接: utcz.com/qa/404664.html

回到顶部