如何防止XSD中出现空XML元素,并使用JAXB进行验证?
为什么在解组期间JAXB生成的Java中没有强制执行如何防止XSD中出现空XML元素,并使用JAXB进行验证?,xml,xsd,jaxb,unmarshalling,Xml,Xsd,Jaxb,Unmarshalling,为什么在解组期间JAXB生成的Java中没有强制执行minLength约束? 我有以下元素 <subHeader seqno="1"><![CDATA[sub header1]]></subHeader> 我希望我的XSD能够阻止空元素,比如 <subHeader seqno="2" /> 当前XSD: <xsd:element name="subHeader" type="subHeaderType" minOccurs="0"
minLength
约束?
我有以下元素
<subHeader seqno="1"><![CDATA[sub header1]]></subHeader>
我希望我的XSD能够阻止空元素,比如
<subHeader seqno="2" />
当前XSD:
<xsd:element name="subHeader" type="subHeaderType" minOccurs="0" maxOccurs="unbounded">
</xsd:element>
<xsd:complexType name="subHeaderType">
<xsd:simpleContent>
<xsd:extension base="NotEmpty">
<xsd:attribute name="seqno" type="xsd:string" use="required"/>
</xsd:extension>
</xsd:simpleContent>
</xsd:complexType>
<xsd:simpleType name="NotEmpty">
<xsd:restriction base="xsd:string">
<xsd:minLength value="1"></xsd:minLength>
<xsd:whiteSpace value="collapse"></xsd:whiteSpace>
</xsd:restriction>
</xsd:simpleType>
您的XSD将允许
<subHeader seqno="1"><![CDATA[sub header1]]></subHeader>
代码信誉:,一个优秀的JAXB资源。您的XSD将允许
<subHeader seqno="1"><![CDATA[sub header1]]></subHeader>
代码信任:,一个优秀的JAXB资源。谢谢您的回复,但是在解组xml之后,我仍然可以在JAXB xjc bean中看到seqno=2属性,并且我没有看到任何为“minLength”约束/限制生成的代码,解组对象后的预期输出。getSuHeader()应该只有seqno=1数据,而不是seqno=2,请帮助我。感谢您的回复,为了您的理解,我正在从xsd生成jaxb xjc bean以解组,但是在解组xml后,我仍然可以在jaxb xjc bean中看到seqno=2属性,并且我没有看到任何生成的“minLength”约束/限制的代码,这是解组对象后的预期输出。getSuHeader()应该只有seqno=1的数据,而不是seqno=2的数据,请帮助我。那么你真的应该在你的问题中提到你的问题本质上是关于JAXB的。答案已更新。问题已更新。谢谢。谢谢你的回复,但是在解组xml之后,我仍然可以在jaxb xjc bean中看到seqno=2属性,并且我没有看到任何为“minLength”约束/限制生成的代码,解组对象后的预期输出。getSuHeader()应该只有seqno=1数据,而不是seqno=2,请帮助我。谢谢你的回复,根据您的理解,我正在从xsd生成jaxb xjc bean以解组,但是在解组xml之后,我仍然可以在jaxb xjc bean中看到seqno=2属性,并且我没有看到任何为“minLength”约束/限制生成的代码,我在解组对象之后的预期输出。getSuHeader()应该只有seqno=1数据,而不是seqno=2,请帮帮我。那么你真的应该在最初的问题中提到你的问题本质上是关于JAXB的。答案已更新。问题已更新。谢谢
package blog.jaxb.validation;
import javax.xml.bind.ValidationEvent;
import javax.xml.bind.ValidationEventHandler;
public class MyValidationEventHandler implements ValidationEventHandler {
public boolean handleEvent(ValidationEvent event) {
System.out.println("\nEVENT");
System.out.println("SEVERITY: " + event.getSeverity());
System.out.println("MESSAGE: " + event.getMessage());
System.out.println("LINKED EXCEPTION: " + event.getLinkedException());
System.out.println("LOCATOR");
System.out.println(" LINE NUMBER: " + event.getLocator().getLineNumber());
System.out.println(" COLUMN NUMBER: " + event.getLocator().getColumnNumber());
System.out.println(" OFFSET: " + event.getLocator().getOffset());
System.out.println(" OBJECT: " + event.getLocator().getObject());
System.out.println(" NODE: " + event.getLocator().getNode());
System.out.println(" URL: " + event.getLocator().getURL());
return true;
}
}