Java DOM评论排序

时间:2015-07-05 14:35:37

标签: java xml parsing dom comments

我最近使用Java的DOM解析器创建了一个解析器,它可以加载xmls并修正一些元素,属性等。 问题是输出格式不会像我希望的那样保持评论。

这里发生了什么:

@@ -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>

我无法找到一种方法来保持元素右侧的注释。 我也想创建新的评论,我可以将它们放在元素之前或之后但不是紧挨着它。

有没有办法可以保留这样的订单?

感谢您的建议!

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我实际上找到了名为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);
    }
}