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

从Java中的XML文件中删除元素

徐洋
2023-03-14
问题内容

我已经从Excel数据库中生成了一个xml文件,它自动包含一个名为“ offset
的元素。为了使新文件符合我的需求,我想使用java删除此元素。这是xml内容:

<Root><models><id>2</id><modelName>Baseline</modelName><domain_id>2</domain_id><description> desctiption </description><years><Y2013>value1</Y2013><Y2014>value2</Y2014><Y2015>value3</Y2015><Y2016>value4</Y2016><Y2017>value5</Y2017></years><offset/></models></Root>

我编写了一个代码来读取(使用缓冲的读取器)并将内容写入新文件中,并在以下情况下使用该条件:

        while (fileContent !=null){
        fileContent=xmlReader.readLine();
        if (!(fileContent.equals("<offset/>"))){
            System.out.println("here is the line:"+ fileContent);
            XMLFile+=fileContent;
            }


    }

但这不起作用


问题答案:

我个人建议使用适当的XML解析器(如Java
DOM)来检查和删除您的节点,而不是将XML作为原始对象处理String(糟糕)。尝试类似这样的操作来删除“偏移”节点。

File xmlFile = new File("your_xml.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(xmlFile);

NodeList nList = doc.getElementsByTagName("offset");
for (int i = 0; i < nList.getLength(); i++) {
    Node node = nList.item(i);
    node.getParentNode().removeChild(node); 
}

上面的代码删除了xml文件中的所有“偏移”节点。

如果考虑到资源/速度问题(例如,当your_xml.xml很大时),则最好使用SAX,它速度更快(代码强度更高)并且不将XML存储在内存中。

一旦您Document已被编辑,你可能会想将它转换为字符串解析到你OutputStream的选择。

希望这可以帮助。



 类似资料:
  • 我正在尝试从xml文件中删除元素和子元素。特别是附加名称Testlog。 首先这是我的xml文件的外观。 以下是我的java代码: 我想删除此appender的所有内容,但引发了一个异常。可能是我错过了一些简单的东西。 有什么想法吗?

  • 问题内容: 我需要有关从UTF-8文件删除BOM并创建其余xml文件的副本的方法的建议。 问题答案: 有因为在UTF-8文件中的BOM的工具断裂是一个 非常 以我的经验平常的事。我不知道为什么会有这么多的否决票(但是这给了我机会去尝试赢得足够的选票来赢得特殊的SO徽章;) 更严重的是:UTF-8 BOM通常没有太大意义, 但 在规格上完全有效(尽管不建议使用)。现在的问题是,很多人不知道BOM在U

  • 这是我的XML文件 我只想从xml中删除第二个选项 我的java代码从我的选项元素中删除所有选项。使用

  • 有没有办法从一个巨大的xml文件中删除注释( 两者,根元素前的注释 和内的注释 最好的解决方案是使用xPath。我试过了 它适用于DOM,但不适用于vtd xml 这是我选择评论的代码 但此处的屏幕上打印的是nothing。 有没有办法用vtd xml做到这一点? 谢谢你的帮助。

  • 问题内容: 我有一个xml,如下所示: 现在,我想删除标记,但在此处保留内容“ ABCD”。或者有没有一种方法可以使用java从整个XML文件中删除。请帮忙。谢谢。 问题答案: 使用DOM4J或SAX解析器解析文档 从标签中获取价值 从值中删除所有html标签 JSoup三通 字符串替换 将新值设置为XML字体标签

  • 我有一个带有声明的XML文件,需要使用XSLT将其删除,用于我使用的样式表版本=“2.0” 我拥有的xml文件(输入) 我需要的输出