当前位置: 首页 > 面试题库 >

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

龚寂弦
2023-03-14
问题内容

我想从另一个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>

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


 类似资料:
  • 问题内容: 我有一个xml文件,调用data.xml就像下面的代码。该项目可以从客户端运行,没有问题,它可以读取xml文件。我现在遇到的问题是我想编写一个可以更新开始日期和结束日期的函数。我不知道如何开始。帮助将不胜感激。 我的main.java 问题答案: 首先加载XML文件… 现在,有几种方法可以执行此操作,但简单来说,您可以使用xpath API查找所需的节点并更新其内容 然后保存回文件…

  • 所以我有一个如下的xml文件: 并有另一个xml文件,如下所示: 使用xslt,如何将第二个文件中的两个元素添加到第一个文件中的student元素中?换句话说,如何创建如下所示的文件: 如果使用xslt是不可能的,那么使用XPath是可行的吗? 非常感谢!

  • “n”表示标记名称的名称,“v”表示标记的值 我应该在XSLT中指定什么?

  • 问题内容: 我在xml文件中定义了一个Spring bean。我想从另一个xml文件中引用它。我该怎么办? 问题答案: 您有两种选择: 进口 包括在建筑中 创建它们时,将两个文件都放入您的文件中=>则无需导入。 例如,如果您在测试期间需要它: 如果它是一个网络应用程序,则可以在中进行: 如果它是独立的应用程序,库等,则应将其加载为:

  • 问题内容: 我有一个XML文档,在它已经包含数据之后,我想对其进行更新。 我考虑过要在(附加)模式下打开XML文件。问题在于新数据将在根结束标记之后写入。 如何删除文件的最后一行,然后从该点开始写入数据,然后关闭根标签? 当然,我可以读取整个文件并进行一些字符串操作,但是我认为这不是最好的主意。 谢谢你的时间。 问题答案: 您绝对 不应该做 的快速简便的方法(请参阅下文)是使用来将整个文件读入字符

  • 我必须在运行时动态生成一个xml文件。请帮助我使用PHP动态生成下面的XML文件。 null