Удалить элемент из XML-файла с помощью jdom - PullRequest
0 голосов
/ 17 апреля 2010

У меня есть XML-файл объемом 300 КБ, содержащий 70 элементов. Мне нужно быть эффективным при удалении одного из элементов корня. Каков наилучший подход?

  • Стоит ли отсоединять элемент в памяти, сохранять его и перезаписывать, перемещая его?
  • Есть ли лучший вариант?

Мне нравится org.jdom, но любое улучшение приветствуется

Ответы [ 2 ]

1 голос
/ 17 апреля 2010

А как насчет простого XSLT, который копирует весь XML вперед, за исключением определенных элементов, которые вам не нужны?

Вы можете использовать измененное преобразование идентичности и просто добавить пустые шаблоны для элементов, которые вы хотите подавить.

Например:

<?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>
1 голос
/ 17 апреля 2010

Поскольку невозможно работать с XML-файлом без его загрузки и анализа, ваш первый подход может сработать ... кроме того, вы не можете просто удалить часть из файла, не переписав его без задействованной части.

Если то, что вы хотите исключить, является довольно простым и легко доступным для поиска, вы также можете обработать файл и записать его во время чтения, не переписывая то, что вы хотите исключить ... это может быть гораздо проще, чем анализировать его.

...