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

如何在Java中修改xml标记的特定值?

蓬琦
2023-03-14
问题内容

我是xml.i的新手,我使用了xml文件,如下所示:

<?xml version="1.0" encoding="UTF-8" ?> 
      - <root>
      - <key>
           <Question>Is the color of the car</Question> 
           <Ans>black?</Ans> 
       </key>
     - <key>
           <Question>Is the color of the car</Question> 
           <Ans>black?</Ans> 
       </key>
     - <key>
           <Question>Is the news paper</Question> 
           <Ans>wallstreet?</Ans> 
      </key>
    - <key>
          <Question>fragrance odor</Question> 
          <Ans>Lavendor?</Ans> 
     </key>
   - <key>
          <Question>Is the baggage collector available</Question> 
         <Ans /> 
     </key>
  </root>

从上面的xml我只想更改

             <Ans>wallstreet?</Ans> as <Ans>WonderWorld</Ans>.

我该如何更改walltreet?作为WonderWorld?通过我的Java应用程序

我写了如下所示的java方法:

  public void modifyNodeval(){
 try{
        DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
        Document doc = docBuilder.parse(new File(path));
        Node nodes1 = doc.getElementsByTagName("*");
        for(int j=0;j<nodes1.getLength();j++)
        {
            //Get the staff element by tag name directly
            Node nodes = doc.getElementsByTagName("key").item(j);
            //loop the staff child node
            NodeList list = nodes.getChildNodes();

            for (int i = 0; i != list.getLength(); ++i)
            {
                Node child = list.item(i);

               if (child.getNodeName().equals("Ans")) {

                   child.getFirstChild().setNodeValue("WonderWorld") ;
                   System.out.println("tag val modified success fuly");
               }

           }
       }
       TransformerFactory transformerFactory = TransformerFactory.newInstance();
       Transformer transformer = transformerFactory.newTransformer();
       DOMSource source = new DOMSource(doc);
       StreamResult result = new StreamResult(path);
       transformer.transform(source, result);
   }
   catch (Exception e) 
   {
       e.printStackTrace();
   }
}

通过使用上面的代码,我能够将所有标签文本更改为奇迹世界,但是我的意图是我只想更改walltreet?作为WonderWorld。

任何人请帮助我.....


问题答案:

if (child.getNodeName().equals("Ans") && child.getTextContent().equals("wallstreet?"))

作为您的条件。



 类似资料:
  • 有谁能帮助我阅读作为Web服务调用响应的XML吗。 我得到的回应是这样的: 当我得到-1作为响应时,我想预先执行动作。我如何阅读它。我在GAE中使用struts,我使用

  • 这是我在这里的第一篇帖子。。。 我正在尝试使用Hy中的赋值(在Python 3上运行)来更改XML元素。 当我尝试运行代码段时: 我得到一个错误: Traceback(最近一次调用):File"/usr/bin/hy",第9行,load_entry_point('hy==0.11.0','console_scripts','hy')()File"/usr/lib/python3/dist-包/hy

  • 我想知道在Java中是否可以修改文本文件中的特定行。我有一个文本文件,如下所示: 行1:0 行2:1 第3排:0 行4:1 我正在使用这个: 结果是: 行1:0 行2:1 第3排:0 第4行:12 等 如果我设置的偏移量为任何其他值比0,我收到这个异常: java线程“AWT-EventQueue-0”中出现异常。lang.StringIndexOutOfBoundsException:字符串索引

  • 问题内容: 我需要在Java中更改JSON属性的值,我可以正确获取该值,但无法修改JSON。 这是下面的代码 做这个的最好方式是什么? 问题答案: 是不可变的,旨在进行解析操作。但是,可以将其转换为允许突变的(和): 对于数组,可以使用:

  • 我有一个Terraform用来管理我的云资源的服务帐户,我们称之为。我需要给予它足够的访问权限来创建/删除/编辑其他服务帐户,但不能更改它自己或项目中不应该接触的其他SAs。 我试着在那里添加一个条件,但看起来‘服务帐户’不是可以在条件(?)中使用的资源类型之一。下面是绑定该角色的HCL片段(我使用Terraform的事实与此无关): 当我删除该条件时,一切正常,但的权限远远超过它所需的权限。它甚

  • 问题内容: 这是一项学术任务,我们将获得一个非常大的XML文件,其中包含数百个此类条目。对于每个项目,我们都应列出经理的ID,将项目添加到列表中的最后一个人员的人员ID以及当前的项目数。我已阅读并重新阅读了Oracle DOM API和各种Node API。我们正在使用JAVA,我一生都无法弄清楚如何搜索每个节点的各个“字段” 。以下是我们提供的数据示例。 我尝试做类似的事情: 并弄乱了这段代码一