Java DOM 评论排序

Java DOM comments ordering

我最近使用 Java 的 DOM 解析器制作了一个解析器,它加载 xml 并更正一些元素、属性等。 问题是输出格式没有按照我希望的方式保留注释。

情况如下:

@@ -2107,7 +2121,8 @@
        <set name="enchant_enabled" val="1" />
        <set name="is_freightable" val="false" />
        <skills>
-           <skill id="3599" level="1" /> <!-- Polearm Multi-attack -->
+           <skill id="3599" level="1" />
+           <!-- Polearm Multi-attack -->
        </skills>

我找不到在元素右侧保留注释的方法。 我还想创建新评论,我可以将它们放在元素之前或之后,但不能紧挨着它。

有什么办法可以保留这样的顺序吗?

多谢指教!

否;从语义上讲,它们是相同的 XML 文件,您无法控制这些元素的呈现方式。如果您想实现此效果,您必须编写自己的 post-处理器来重写 XML 文件。

我实际上找到了一个名为 DecentXML 的库,它帮助我实现了我想要的。

private void writeElement(Element parentNode, Element newNode, String comment)
{
    try
    {
        if (comment != null)
        {
            parentNode.addNodes(new Text("\t"), newNode, new Text(" "), new Comment(" " + comment + " "), new Text("\n\t\t"));
        }
        else
        {
            parentNode.addNodes(new Text("\t"), newNode, new Text("\n\t\t"));
        }
    }
    catch (Exception e)
    {
        LOGGER.warn("Error while writing element", e);
    }
}