java - 使用 Castor XML 映射解码时忽略字段

标签 java xml unmarshalling castor

我需要将 XML 转换为对象(解码),但有一个字段(标记)我不希望它被映射。我一直在 StackOverFlow 中寻找答案,但只找到了如何将对象转换为 XML(编码),并且我需要了解(解码)。这是 XML:

<autorizacion>
    <estado>AUTORIZADO</estado>
    <numeroAutorizacion>9999999999999</numeroAutorizacion>
    <fechaAutorizacion>17/06/2015</fechaAutorizacion>
    <comprobante>
<comprobanteRetencion id="comprobante" version="1.0.0">
   <infoAdicional>
    <campoAdicional nombre="correo:">jeje@hotmail.com</campoAdicional>
  </infoAdicional>
<ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:etsi="http://uri.etsi.org/01903/v1.3.2#" Id="Signature89637">
<ds:KeyInfo Id="Certifixxxxxx0">
<ds:Modulus>
ppFiiWXmjvwteDiLvklh38gGypZ8moRjEhEijs0kfjpddd1NTJ5QWmNtgH8uVUP5aEduxPMYQPpg
</ds:Modulus>
</ds:KeyInfo>
</ds:Signature>
</comprobanteRetencion>
</comprobante>
</autorizacion>

我想从解码过程中排除标签 Signature。

这里是映射 XML:

<class name="ec.eac.sitac.esigef.ComprobanteRetencion" auto-complete="true">
    <map-to xml="comprobanteRetencion" />
    <field name="infoAdicional" type="ec.eac.sitac.esigef.InfoAdicional">
        <bind-xml name="infoAdicional" node="element" />
    </field>
</class>

最佳答案

任何未映射的元素都将被忽略,除非您针对架构进行验证。

示例:

@XmlRootElement(name="A")
public class A {
    @XmlElement(name="B")
    String b;
}

测试代码:

String xml = "<A><B>Hello</B><C>World</C></A>";
JAXBContext jaxb = JAXBContext.newInstance(A.class);
Unmarshaller unmarshaller = jaxb.createUnmarshaller();
A a = (A)unmarshaller.unmarshal(new StringReader(xml));
System.out.println(a.b);

输出:

Hello

如您所见,<B>的值被解码,并且 <C> 的值被忽略了。

更新

显式忽略 <C> 的值,添加一个虚拟设置方法:

@XmlElement(name="C")
void setC(String c) {/*ignore*/}

关于java - 使用 Castor XML 映射解码时忽略字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32684689/

相关文章:

java - Extentreport 日志行正在重复

java - 将元素标签替换为空标签

java - Git 多樱桃选择与 Bash 抛出错误

xml - ApacheFOP - 空白 PDF 输出?

jquery - 错误 : "Origin null is not allowed by Access-Control-Allow-Origin" when loading an XML file with JQuery's ajax method

java - 使用 HANA 的 Web 应用程序,获取 SLF4J : Class path contains multiple SLF4J bindings

javascript - Highcharts 从 XML 生成柱形图

java - 使用JAXB解析XML,面临Unmarshal绑定(bind)注释错误

java - 使用动态元素进行 JAXB 解码

java - 使用 Jaxb Unmarshall 获取 null 值