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

使用Java删除XML根目录的子级

詹夕
2023-03-14
问题内容

这是我的xml文件。

- <deviceparameters>
       - <parameter componenttype="TextBox">
         <name>Operating Type</name> 
         <oid>1.3.6.1.4.1.31163.5.1.1</oid>  
         <writable>true</writable> 
         <description>The operating type defines which waveform type is used. This configuration takes several seconds to execute</description> 
       - <paramvalues type="Integer">
            <value default="No">123</value> 
         </paramvalues>
         </parameter>

       - <parameter componenttype="TextBox">
         <name>Active Waveform Status</name> 
         <oid>1.3.6.1.4.1.31163.5.1.2</oid> 
         <writable>false</writable> 
         <description>Show the status of the waveform configured by operatingType</description> 
       - <paramvalues type="String">
            <value default="yes">Active</value> 
      </paramvalues>
      </parameter>
    </deviceparameters>

我想删除名称为“ Active wavwform Status”的节点。如何从xml中删除该特定节点。

我写的代码如下。

rootElement = doc.getDocumentElement();
NodeList nList = doc.getElementsByTagName("parameter");
String nodeName = TF_name.getText();


System.out.println(""+nList.getLength());

for (int temp = 0; temp < nList.getLength();temp++)                
{
    Node nNode =  nList.item(temp);    
    Element eElement = (Element) nNode;
    String upname1 = getTagValue("name", eElement);

    if(upname1.equals(nodeName))
    {
        System.out.println("Parent:   "+nNode.getParentNode().getNodeName());
        System.out.println("nodename: "+nNode.getNodeName());
        System.out.println("rmoving ....");

        rootElement.removeChild(nNode);

        System.out.println("removed..."); 
    }                   
}

问题答案:

我得到了答案。
实际上,我是从xml文件中删除该节点,但没有将其写入xml文件中。
我缺少以下部分

TransformerFactory transformerFactory = TransformerFactory.newInstance();  
Transformer transformer = transformerFactory.newTransformer();   
DOMSource source = new DOMSource(doc);   
StreamResult result = new StreamResult(selectedFile); 
transformer.transform(source, result);

经过长时间的代码研究,我发现了这个愚蠢的错误,因此我纠正了它。
无论如何,谢谢您的回复。



 类似资料:
  • 问题内容: 有没有办法用Java递归删除整个目录? 在正常情况下,可以删除一个空目录。但是,要删除带有目录的整个目录,就不再那么简单了。 如何用Java删除包含目录的整个目录? 问题答案: 你应该查看。它有一个类,可以执行你想要的操作。

  • 问题内容: Python 3.2.5 x64 ElementTree 我有需要使用python格式化的数据。本质上,我具有包含元素和子元素的文件。我需要删除其中一些元素的子元素。我已经检查了先前的问题,但无法解决。到目前为止,我拥有的最好的功能只是删除了每个第二子元素。 样本数据: 我需要的输出看起来像: 我有一段时间没有写任何东西了,我的代码也没用。我可以解析文件,然后将其写入,但我无法正确处理

  • 在我的应用程序中,我需要能够从TreeView中删除每个项目。 我给树景注入了控制器 我的删除代码: 实际问题是:如何删除根元素?我在api中找不到任何方法,我不想创建新实例,我更喜欢依赖项注入解决方案。我想我可以在创建下一个节点之前隐藏此项,但它似乎有点不正常。 谢谢你花在这个话题上的时间!

  • 问题内容: 从我的java(ant)项目中删除未使用的jar的最简单方法是(tool?)。我们的项目已经变得非常庞大,我们希望进行清理。有几个jar添加到类路径中,但并非全部都用于编译/运行。有没有一种方法可以通过从命令行运行一些实用程序来识别不必要的jar? 注意 :我们不想遵循删除一个或多个jar的繁琐过程,然后编译/运行以测试是否需要这些jar。 问题答案: 这就是我最终做的事情,我在编译时

  • 我的应用程序创建了一个安装程序没有的文件夹,因此我需要弄清楚如何删除这些文件。唯一的问题是卸载程序是以root用户身份运行的。因此,当我尝试使用一个操作清除这些文件并尝试将其指向调用用户(在本例中,它是根用户)时,它会尝试删除目录中的这些附加文件。但是,这些文件被创建并存储在目录中。 我查看了install4j页面,找不到检测调用sudo用户的方法。在shell中,这可以通过调用来实现。是否存在(

  • 问题内容: 在下面的示例XML中,如果E = 13,则如何使用java解析器删除整个B节点。 请指教。 问题答案: 替代DOM方法 另外,您可以使用JDK中的XPath功能来查找值“ 13”的“ B”元素,然后从其父级中删除它,而不是对XML文档进行蛮力遍历: 使用XPath的优点是易于维护,如果结构更改,则只需对代码进行一行更改。同样,如果文档的深度增加,基于XPath的解决方案将保持相同的行数