Java 如何在使用JAXB编辑XML文件时维护XML格式?

Java 如何在使用JAXB编辑XML文件时维护XML格式?,java,xml,jaxb,xsd,Java,Xml,Jaxb,Xsd,我正在使用Jaxb编辑现有的xml文件。我有这个文件的xsd模式,所以我使用xjc生成了这些类。为了向xml文件添加新条目/元素,我使用jaxb将文件转换为对象。接下来,我对该对象进行更改,即向其添加新对象(通过实例化类)等。然后将该对象编组回相同的xml文件。 问题是新xml文件与旧xml文件的格式不同。注释也会丢失,元素/属性的顺序也会更改。以下是一个例子: Old.xml: <?xml version="1.0"?> <!-- Copyright (c)

我正在使用Jaxb编辑现有的xml文件。我有这个文件的xsd模式,所以我使用xjc生成了这些类。为了向xml文件添加新条目/元素,我使用jaxb将文件转换为对象。接下来,我对该对象进行更改,即向其添加新对象(通过实例化类)等。然后将该对象编组回相同的xml文件。 问题是新xml文件与旧xml文件的格式不同。注释也会丢失,元素/属性的顺序也会更改。以下是一个例子:

Old.xml:

 <?xml version="1.0"?>

    <!-- 
 Copyright (c) 2009. All rights reserved.

   NAME
     old.xml 

   DESCRIPTION
      The components for yii.

   NOTES
     This component only defines the yii deletion.

-->


<yii-definition 
    xsi:noNamespaceSchemaLocation="file:../schemas/component-definition.xsd" 
    xmlns:xsi        = "http://www.w3.org/2001/XMLSchema-instance"
    category         = "application" 
    name             = "ola" 
    procedure        = "" 
    type             = "ola"
    singleton        = "false"
    home             = "j2ee"
    base             = "application-family">

    <association 
        name         = "ola Compensation" 
        id           = "app" 
        type         = "ola-p" 
        enable       = "@{action.install.hcm.comp}" 
        required     = "false">
    </association>

    <association 
        name         = "ola Benefits" 
        id           = "app" 
        type         = "ola-ben" 
        enable       = "@{action.install.hcm.ben}" 
        required     = "false">
    </association>

</yii-definition>


New.xml: (added a new association element)

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>

    <component-definition base="application-family" category="application" home="j2ee" name="HCM" procedure="" singleton="false" type="hcm">

        <association enable="@{action.install.hcm.comp}" id="app" name="Ola Compensation" required="false" type="ola-comp"/>
        <association enable="@{action.install.hcm.ben}" id="app" name="Ola Benefits" required="false" type="ola-ben"/>
        <association enable="@{action.install.hcm.supply}" id="app" name="Ola SUPPLY" required="false"/>


<yii-defition>

New.xml:(添加了一个新的关联元素)
因此,评论缺失。添加了一些附加属性,如独立属性等。元素中属性的顺序也不同。
要保持相同的格式、顺序等,应该做些什么?

您是否检查了此链接?该链接只是解释了如何提取注释。我要寻找的是如何在文件中添加新条目时保持注释和格式不变。一旦我解组xml并再次对其进行marshall,旧的格式、顺序和注释都将消失。当您解组xml时,注释也将消失。因为Jaxb忽略了它们。这就是为什么您需要关注引用的文章,从xml中提取注释并将其放入POJO中。然后,当您再次编组时,需要将注释放回xmlOk中。那么格式呢?将JAxb.Output_格式设置为true似乎不起作用。所有元素都在新文件的一行中打印。知道如何保持与旧文件相同的格式吗?不知道。。。。我不记得Jaxb中有任何保留格式功能。我可以知道为什么保存格式很重要吗?如果您想显示需要,也许您可以自己“漂亮地打印”xml。。。喜欢