当前位置: 首页 > 知识库问答 >
问题:

MOXy JAXB:如何将元素排除在封送处理之外

陶博耘
2023-03-14
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class CustomerTest {

    private Long id;

    @XmlPath("contact-info/billing-address")
    private AddressTest billingAddress;

    @XmlPath("contact-info/shipping-address") 
    private AddressTest shippingAddress;

    @XmlPath("FileHeader/SchemaVersion/text()")
    private String schemaVersion;
}
private void marshallCustomerTest() {
        try {
            JAXBContext jc = JAXBContext.newInstance(CustomerTest.class);

            CustomerTest customer = new CustomerTest();
            customer.setId(new Long(10));
            customer.setSchemaVersion("3.2");

            AddressTest billingAddress = new AddressTest();
            billingAddress.setStreet("1 Billing Street");
            customer.setBillingAddress(billingAddress);

            AddressTest shippingAddress = new AddressTest();
            shippingAddress.setStreet("2 Shipping Road");
            customer.setShippingAddress(shippingAddress);

            Marshaller m = jc.createMarshaller();
            m.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
            m.marshal(customer, System.out);
        } catch (JAXBException jex) {
            jex.printStackTrace();
            log.error(jex);
        }
    }
<customerTest xmlns:fe="http://www.facturae.es/Facturae/2009/v3.2/Facturae" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
   <id>10</id>
   <contact-info>
      <billing-address>
         <street>1 Billing Street</street>
      </billing-address>
      <shipping-address>
         <street>2 Shipping Road</street>
      </shipping-address>
   </contact-info>
   <FileHeader>
      <SchemaVersion>3.2</SchemaVersion>
   </FileHeader>
</customerTest>

有人帮忙吗?

提前道谢。

共有1个答案

沃皓轩
2023-03-14

您可以使用@XMLTransion标记属性以将其从XML表示形式中排除:

@XmlTransient
private Long id;

也可以使用@XmlAccessorType(XmlAccessStype.None)对类型进行注释,以便仅映射带注释的字段/属性。

@XmlAccessorType(XmlAccessType.NONE)
public class CustomerTest {

有关更多信息

    null
 类似资料:
  • 我有以下问题,当我生成XML文件时,Jaxb给根元素的名称空间添加前缀,我不知道如何跳过它。 我有软件包信息.java文件 我有根元素 结果我得到了 如果没有@XmlNs,它的工作方式也是一样的,将命名空间添加到@XmlRoolElement也没有帮助。它会有什么问题?

  • 问题内容: 我想使用一个开关在网页上放置段落标签。 我使用after伪元素: 现在,我需要从页面中删除此CSS代码。 如何轻松做到这一点? 我要补充一点: jQuery已在页面上使用 而且我不想包含或删除包含CSS的文件。 问题答案: p:after { content: none; } none 是将内容(如果指定)设置为 空 的官方值。

  • 在对net进行研究之后,我猜想jaxb编译器再次尝试基于元素创建customer类,它已经基于元素所以我不想在解组时为permanentCustomer创建java对象,因为它已经在创建customer时创建了。 我能想到两个解决办法 1)maven-jaxb2-plugin插件的一些配置,如果java类已经生成,就不要重新生成,继续 是否存在任何配置?

  • 问题内容: 我有许多需要自定义编组的结构。在测试时,我使用的是JSON和标准的JSON marshaller。由于它不会封送未导出的字段,因此我需要编写一个自定义的MarshalJSON函数,该函数运行良好。当我在父结构上调用json.Marshal时,该结构包含需要自定义编组的字段,它工作正常。 现在,我需要将所有内容封送给BSON进行MongoDB的工作,而我找不到任何有关如何编写自定义BSO

  • 问题内容: 我要在一个图形中制作一系列20个图(不是子图)。我希望图例在框外。同时,由于图形尺寸变小,我不想更改轴。请帮助我进行以下查询: 我想将图例框保留在绘图区域之外。(我希望图例位于绘图区域的右侧)。 无论如何,我是否减小了图例框内文本的字体大小,以使图例框的大小变小。 问题答案: 有很多方法可以做你想要的。要添加和所说的内容,可以使用关键字参数将图例部分地放置在轴外and/or 减小字体大

  • 我有从一个模式创建的JAXB对象。在封送过程中,使用NS2对xml元素进行注释。对于这个问题,我已经尝试了网络上存在的所有选项,但没有一个可行。我不能修改我的模式或更改package-info.java。请帮忙