gpt4 book ai didi

java - JAXB:缺少命名空间

转载 作者:数据小太阳 更新时间:2023-10-29 02:06:37 24 4
gpt4 key购买 nike

我正在尝试从通过 JAXB 生成的类序列化 XML。

类(class):

package ws.avail;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"pos",
"uniqueID",
"availStatusMessages"
})
@XmlRootElement(name = "OTA_HotelAvailNotifRQ")
public class OTAHotelAvailNotifRQ {
...
}

文件“package-info.java”:

@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.opentravel.org/OTA/2003/05", elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED)
package ws.avail;

编码器(经过简化,没有错误处理):

context = JAXBContext.newInstance(rootElement.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(rootElement, stringWriter);
return stringWriter.toString();

此代码生成:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>  
<OTA_HotelAvailNotifRQ Version="1.000" Target="TEST">
....

我期待这样的事情:

<?xml version="1.0" encoding="UTF-8"?>  
<OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05" Version="1.000" Target="TEST">
....

我有一个类似的代码并且工作正常,但我不明白为什么这段代码不显示命名空间。有什么线索吗?谢谢!

最佳答案

您的映射是正确的

我试用了您的模型,它对我有用:

演示

package ws.avail;

import java.io.StringWriter;
import javax.xml.bind.*;

public class Demo {

public static void main(String[] args) throws Exception {
OTAHotelAvailNotifRQ rootElement = new OTAHotelAvailNotifRQ();
StringWriter stringWriter = new StringWriter();

JAXBContext context = JAXBContext.newInstance(rootElement.getClass());
Marshaller marshaller = context.createMarshaller();
marshaller.marshal(rootElement, stringWriter);
System.out.println(stringWriter.toString());
}

}

输出

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><OTA_HotelAvailNotifRQ xmlns="http://www.opentravel.org/OTA/2003/05"/>

解决方案

通常发生此问题时,package-info 类未编译或未与应用程序打包。


了解更多信息

关于java - JAXB:缺少命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15785854/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com