我有以下JAXB对象:
@XmlRootElement(name = "AuthEntry")
@XmlAccessorType(XmlAccessType.FIELD)
public class AuthEntry {
@XmlElement(name = "Account")
private Account account;
@XmlElement(name = "Key", required = true)
private String key;
@XmlElement(name = "Expire", required = true)
private Date expire;
// Getter & Setter
// ...
我使用JAXB编组程序将对象转换为XML:
public static <T> String marshalObject(T pObject) throws JAXBException, IOException {
JAXBContext context = JAXBContext.newInstance(pObject.getClass());
Marshaller m = context.createMarshaller();
try (ByteArrayOutputStream stream = new ByteArrayOutputStream()) {
m.marshal(pObject, stream);
stream.flush();
return new String(stream.toByteArray());
}
}
它运行平稳,没有任何异常,但是,结果总是缺少元素键。我试图将其改为Attribute,但它也不起作用。以下是输出示例:
<AuthEntry xmlns:ns2="urn:schemas-microsoft-com:sql:SqlRowSet3">
<Account ID="1" Username="datvm" Password="datvm" FullName="NullPtrExc" Active="true"/>
<Expire>2014-06-06T20:07:32.428+07:00</Expire>
</AuthEntry>
我曾尝试将键更改为另一个名称,例如AuthKey,但它仍然缺失。我做错了什么?
编辑我发现了问题,这是因为我的键的值是空的。如果它包含值,则将其写入XML。然而,您能解释一下为什么在XMLElement中,我写了required=true,但当它为null时,它仍然缺失吗?
JAXB忽略必需的
属性,见此问答。
但是,如果您使用Schemagen
从您的类创建XSD模式,则注释的必需
属性将被满足,并且根据模式将需要XML元素。
默认情况下,JAXB实现不会为null
值列表属性或元素。您可以使用以下命令让JAXB生成一个包含xsi: nil="true"
属性的元素:
@XmlElement(nillable=true)
空元素不是null的有效表示形式。例如,如果元素的类型为xs:dateTime,并且相应的元素为空,那么该文档将不会根据XML模式进行验证。
为什么验证器(http://validator.w3.org/)拒绝这个?什么属性是我不知道的“必需”? 错误: 错误行408,第142列:元素链接缺少必需的属性/模块/14ce1e21/peadig eucookie。css'type='text/css'media='all'/
我正在使用JPA元模型生成http://relation.to/Bloggers/HibernateStaticMetamodelGeneratorAnnotationProcessor能够使用属性名称执行条件查询。 我正在通过ANT和hibernate-jpamodelgen-4.3.5生成元模型类。最终的http://mvnrepository.com/artifact/org.hiberna
我正在尝试使用JAXB进行封送处理。 我的输出是这样的: ...但我需要这样的输出: 如果取消对代码的注释,则会得到。没有它,我可以编译,但我不能得到所需的精确输出。 我的豆子长这样: 适配器类
我正在VSCode中使用OpenAPI 3编写一个API文档,扩展为OpenAPI(Swagger)Editor v4.9.1。直到今天它都运行良好-突然我的文档在所有模式声明中充满了“属性”错误。错误是:
我正在使用JAXB解析器将通过http请求发送的XML转换为Java对象,同时根据XSD模式对其进行验证。问题是,当调用unmarshal()方法时,它会引发以下异常: UnMarshalException:意外元素(URI:“http://www.somedomain.com/”,local:“assign”)。所需元素为(无) 如果从根XML元素中删除名称空间,它会引发相同的异常,uri部分为
我正在构建一系列链接类,我希望这些类的实例能够整理成XML,这样我就可以将它们保存到一个文件中,以后再读进去。 目前我使用以下代码作为测试用例: XML输出为: 元素为空有什么原因吗?我希望它包含日期的字符串表示(即)。为了做到这一点,我需要编写一些我自己的代码吗? 的输出是: