Java 在像web-app_2_5.xsd这样的xsd上使用xjc(jaxb)不会';不要创建可用的映射 在类似web-app_2_5.xsd的xsd上使用xjc(jaxb)不会创建可用的映射
没有@XmlAccessorType,也没有办法使用映射对XML进行封送和解封。如何修改这些映射以创建可用文件?(ant、maven、xjc命令行都给出相同的输出) 以下是生成的WebAppType,例如:Java 在像web-app_2_5.xsd这样的xsd上使用xjc(jaxb)不会';不要创建可用的映射 在类似web-app_2_5.xsd的xsd上使用xjc(jaxb)不会创建可用的映射,java,jaxb,xjc,xmlbeans,jibx,Java,Jaxb,Xjc,Xmlbeans,Jibx,没有@XmlAccessorType,也没有办法使用映射对XML进行封送和解封。如何修改这些映射以创建可用文件?(ant、maven、xjc命令行都给出相同的输出) 以下是生成的WebAppType,例如: @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "web-appType", propOrder = { "descriptionAndDisplayNameAndIcon" }) public class WebAppTy
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "web-appType", propOrder = {
"descriptionAndDisplayNameAndIcon"
})
public class WebAppType {
@XmlElementRefs({
@XmlElementRef(name = "resource-env-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "post-construct", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "icon", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "error-page", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "jsp-config", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "message-destination", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "display-name", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "security-constraint", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "message-destination-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "security-role", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "pre-destroy", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "filter", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "env-entry", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "ejb-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "filter-mapping", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "mime-mapping", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "distributable", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "persistence-unit-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "login-config", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "servlet", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "ejb-local-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "description", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "service-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "persistence-context-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "context-param", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "resource-ref", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "session-config", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "locale-encoding-mapping-list", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "servlet-mapping", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "welcome-file-list", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class),
@XmlElementRef(name = "listener", namespace = "http://java.sun.com/xml/ns/javaee", type = JAXBElement.class)
})
protected List<JAXBElement<?>> descriptionAndDisplayNameAndIcon;
@XmlAttribute(name = "version", required = true)
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
protected java.lang.String version;
@XmlAttribute(name = "id")
@XmlJavaTypeAdapter(CollapsedStringAdapter.class)
@XmlID
@XmlSchemaType(name = "ID")
protected java.lang.String id;
@XmlAttribute(name = "metadata-complete")
protected Boolean metadataComplete;
/**
* Gets the value of the descriptionAndDisplayNameAndIcon property.
*
* <p>
* This accessor method returns a reference to the live list,
* not a snapshot. Therefore any modification you make to the
* returned list will be present inside the JAXB object.
* This is why there is not a <CODE>set</CODE> method for the descriptionAndDisplayNameAndIcon property.
*
* <p>
* For example, to add a new item, do as follows:
* <pre>
* getDescriptionAndDisplayNameAndIcon().add(newItem);
* </pre>
*
*
* <p>
* Objects of the following type(s) are allowed in the list
* {@link JAXBElement }{@code <}{@link ResourceEnvRefType }{@code >}
* {@link JAXBElement }{@code <}{@link LifecycleCallbackType }{@code >}
* {@link JAXBElement }{@code <}{@link IconType }{@code >}
* {@link JAXBElement }{@code <}{@link ErrorPageType }{@code >}
* {@link JAXBElement }{@code <}{@link JspConfigType }{@code >}
* {@link JAXBElement }{@code <}{@link MessageDestinationType }{@code >}
* {@link JAXBElement }{@code <}{@link DisplayNameType }{@code >}
* {@link JAXBElement }{@code <}{@link SecurityConstraintType }{@code >}
* {@link JAXBElement }{@code <}{@link MessageDestinationRefType }{@code >}
* {@link JAXBElement }{@code <}{@link SecurityRoleType }{@code >}
* {@link JAXBElement }{@code <}{@link LifecycleCallbackType }{@code >}
* {@link JAXBElement }{@code <}{@link FilterType }{@code >}
* {@link JAXBElement }{@code <}{@link EnvEntryType }{@code >}
* {@link JAXBElement }{@code <}{@link EjbRefType }{@code >}
* {@link JAXBElement }{@code <}{@link FilterMappingType }{@code >}
* {@link JAXBElement }{@code <}{@link MimeMappingType }{@code >}
* {@link JAXBElement }{@code <}{@link EmptyType }{@code >}
* {@link JAXBElement }{@code <}{@link PersistenceUnitRefType }{@code >}
* {@link JAXBElement }{@code <}{@link LoginConfigType }{@code >}
* {@link JAXBElement }{@code <}{@link ServletType }{@code >}
* {@link JAXBElement }{@code <}{@link EjbLocalRefType }{@code >}
* {@link JAXBElement }{@code <}{@link DescriptionType }{@code >}
* {@link JAXBElement }{@code <}{@link ServiceRefType }{@code >}
* {@link JAXBElement }{@code <}{@link PersistenceContextRefType }{@code >}
* {@link JAXBElement }{@code <}{@link ParamValueType }{@code >}
* {@link JAXBElement }{@code <}{@link ResourceRefType }{@code >}
* {@link JAXBElement }{@code <}{@link SessionConfigType }{@code >}
* {@link JAXBElement }{@code <}{@link ServletMappingType }{@code >}
* {@link JAXBElement }{@code <}{@link LocaleEncodingMappingListType }{@code >}
* {@link JAXBElement }{@code <}{@link WelcomeFileListType }{@code >}
* {@link JAXBElement }{@code <}{@link ListenerType }{@code >}
*
*
*/
public List<JAXBElement<?>> getDescriptionAndDisplayNameAndIcon() {
if (descriptionAndDisplayNameAndIcon == null) {
descriptionAndDisplayNameAndIcon = new ArrayList<JAXBElement<?>>();
}
return this.descriptionAndDisplayNameAndIcon;
}
/**
* Gets the value of the version property.
*
* @return
* possible object is
* {@link java.lang.String }
*
*/
public java.lang.String getVersion() {
return version;
}
/**
* Sets the value of the version property.
*
* @param value
* allowed object is
* {@link java.lang.String }
*
*/
public void setVersion(java.lang.String value) {
this.version = value;
}
/**
* Gets the value of the id property.
*
* @return
* possible object is
* {@link java.lang.String }
*
*/
public java.lang.String getId() {
return id;
}
/**
* Sets the value of the id property.
*
* @param value
* allowed object is
* {@link java.lang.String }
*
*/
public void setId(java.lang.String value) {
this.id = value;
}
/**
* Gets the value of the metadataComplete property.
*
* @return
* possible object is
* {@link Boolean }
*
*/
public Boolean isMetadataComplete() {
return metadataComplete;
}
/**
* Sets the value of the metadataComplete property.
*
* @param value
* allowed object is
* {@link Boolean }
*
*/
public void setMetadataComplete(Boolean value) {
this.metadataComplete = value;
}
}
*
*
*
*列表中允许以下类型的对象
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*{@link JAXBElement}{@code}
*
*
*/
公共列表>();
}
返回this.description和DisplayNameAndIcon;
}
/**
*获取version属性的值。
*
*@返回
*可能的对象是
*{@link java.lang.String}
*
*/
public java.lang.String getVersion(){
返回版本;
}
/**
*设置版本属性的值。
*
*@param值
*允许的对象是
*{@link java.lang.String}
*
*/
public void setVersion(java.lang.String值){
this.version=值;
}
/**
*获取id属性的值。
*
*@返回
*可能的对象是
*{@link java.lang.String}
*
*/
public java.lang.String getId(){
返回id;
}
/**
*设置id属性的值。
*
*@param值
*允许的对象是
*{@link java.lang.String}
*
*/
public void setId(java.lang.String值){
this.id=值;
}
/**
*获取metadataComplete属性的值。
*
*@返回
*可能的对象是
*{@link Boolean}
*
*/
公共布尔值isMetadataComplete(){
返回元数据完成;
}
/**
*设置metadataComplete属性的值。
*
*@param值
*允许的对象是
*{@link Boolean}
*
*/
public void setMetadataComplete(布尔值){
this.metadataComplete=值;
}
}
实现将从任何XML模式(包括web-app_2_5.xsd)创建可用的映射
您需要在冒号(:
)分隔的所有生成的包名列表上创建JAXBContext
:
Unmarshaller unmarshaller = jc.createUnmarshaller();
Object result = unmarshaller.unmarshal(xml);
然后,您将能够通过执行以下操作将XML转换为Java对象(解组):
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(result, System.out);
然后,您可以通过执行以下操作将对象写回XML(封送):
是的,但问题是我必须对web-app_2_5.xml中的web.xml的所有子部分执行此操作,然后将它们与string builder类型类粘合在一起,从而使JAXB在本例中的使用不比其他方法更容易。当XSD解析得很好或者您从JAXB创建模式时,它工作得很好,并且减少了开发time@user1889665-为什么您觉得需要这样做?使用jaxb和这个xsd无法从任何有效的web.xml中解压类。这个xsd在xmlbeans中也不起作用。但是,一旦删除jibx不支持的和标记(抛出错误),jibx就会创建能够正确创建web.xml的java类。对于jaxb和xmlbeans,您可以使用非常繁琐的代码构造xml,但是您不能为此解析任何xmlXSD@user1889665-我不知道你的意思。看起来好像您已经成功地生成了模型(您在问题中发布了一个类)。您尝试过用什么代码来进行解组?这是一个老问题,但总而言之,jaxb和xmlbeans没有从web.xml创建正确的代码,因为jibx确实正确地处理了一些注释和文档标记。在运行jaxb或xmlbeans之前,最好对xml文件中的这些标记进行grep处理,以避免出现问题
Marshaller marshaller = jc.createMarshaller();
marshaller.marshal(result, System.out);