JAXB 绑定排除字段
JAXB bindings exclude field
我环顾四周 google 了一点,但我相信这里有人能比我找到答案更快地提供答案。我是 运行 XJC2Task (org.jvnet.jaxb2_commons.xjc.XJC2Task) 和 binding.xjb 文件以从一些 XSD 生成 java 源代码。
我们正在考虑从数据中删除我们从第三方收到的一些个人信息。有没有一种方法可以将某些元素指定为 @XMLTransient 或从 bindings.xjb 文件中完全忽略它们?
例如如果我有以下 xsd :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="test.3.0" xmlns="test.3.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="TestInfo" type = "TestInfo">
<xs:annotation>
<xs:documentation>TestInfo schema</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="TestInfo">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="id" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
在我的 binding.xjb 文件中有
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
jaxb:extensionBindingPrefixes="inheritance">
<jaxb:globalBindings>
<jaxb:serializable uid="1" />
</jaxb:globalBindings>
<jaxb:bindings schemaLocation="schema/test.xsd">
<jaxb:schemaBindings>
<jaxb:package name="org.test" />
</jaxb:schemaBindings>
</jaxb:bindings>
有什么方法可以从中删除 id 吗?
我希望我不必重新学习 XSLT 即可完成此操作。 ;D
您可以通过 annox (jaxb2-basics-annotate) 使用此绑定。
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:annox="http://annox.dev.java.net"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
jaxb:extensionBindingPrefixes="xjc annox"
version="2.1">
<jaxb:bindings schemaLocation="schema/test.xsd">
<jaxb:bindings
node="//xs:complexType[@name='TestInfo']//xs:sequence//xs:element[@name='id']">
<annox:annotate>
<annox:annotate annox:class="javax.xml.bind.annotation.XmlTransient">
</annox:annotate>
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>
我环顾四周 google 了一点,但我相信这里有人能比我找到答案更快地提供答案。我是 运行 XJC2Task (org.jvnet.jaxb2_commons.xjc.XJC2Task) 和 binding.xjb 文件以从一些 XSD 生成 java 源代码。
我们正在考虑从数据中删除我们从第三方收到的一些个人信息。有没有一种方法可以将某些元素指定为 @XMLTransient 或从 bindings.xjb 文件中完全忽略它们?
例如如果我有以下 xsd :
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema targetNamespace="test.3.0" xmlns="test.3.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:element name="TestInfo" type = "TestInfo">
<xs:annotation>
<xs:documentation>TestInfo schema</xs:documentation>
</xs:annotation>
</xs:element>
<xs:complexType name="TestInfo">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
<xs:element name="id" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
在我的 binding.xjb 文件中有
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<jaxb:bindings version="2.1" xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
jaxb:extensionBindingPrefixes="inheritance">
<jaxb:globalBindings>
<jaxb:serializable uid="1" />
</jaxb:globalBindings>
<jaxb:bindings schemaLocation="schema/test.xsd">
<jaxb:schemaBindings>
<jaxb:package name="org.test" />
</jaxb:schemaBindings>
</jaxb:bindings>
有什么方法可以从中删除 id 吗? 我希望我不必重新学习 XSLT 即可完成此操作。 ;D
您可以通过 annox (jaxb2-basics-annotate) 使用此绑定。
<jaxb:bindings
xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:annox="http://annox.dev.java.net"
xsi:schemaLocation="http://java.sun.com/xml/ns/jaxb http://java.sun.com/xml/ns/jaxb/bindingschema_2_0.xsd"
jaxb:extensionBindingPrefixes="xjc annox"
version="2.1">
<jaxb:bindings schemaLocation="schema/test.xsd">
<jaxb:bindings
node="//xs:complexType[@name='TestInfo']//xs:sequence//xs:element[@name='id']">
<annox:annotate>
<annox:annotate annox:class="javax.xml.bind.annotation.XmlTransient">
</annox:annotate>
</annox:annotate>
</jaxb:bindings>
</jaxb:bindings>
</jaxb:bindings>