使用jdom从xml文件中删除元素

时间:2010-04-17 18:40:20

标签: java xml file performance jdom

我有一个包含70个元素的300 KB xml文件。 我需要在删除root的一个元素时高效。 什么是最好的方法?

  • 我应该将元素分离到内存中,保存并通过移动来覆盖它吗?
  • 有更好的选择吗?

我喜欢org.jdom,但欢迎任何改进

2 个答案:

答案 0 :(得分:1)

由于没有加载和解析它就无法使用XML文件,因此您的第一种方法可以正常工作..此外,您不能简单地从文件中删除一块而不重写它而没有相关的部分。

如果您要排除的内容非常简单且易于搜索,您还可以在阅读时处理该文件并将其写出,而无需重写您要排除的内容..这可能比解析它简单得多..

答案 1 :(得分:1)

除了您不想要的特定元素之外,复制所有XML的简单XSLT怎么样?

您可以使用修改后的identity transform,只需为要抑制的元素添加空模板。

例如:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">

    <xsl:template match="/">
        <xsl:apply-templates/>
    </xsl:template>

    <!--Identity transform copies all nodes and attributes by default -->
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates />
        </xsl:copy>
    </xsl:template>

    <!--Create an empty template for the elements that you want to suppress-->
    <xsl:template match="ElementToRemove" />

</xsl:stylesheet>