gpt4 book ai didi

xml - @xmlSchema 注释与 jaxb 一起使用

转载 作者:数据小太阳 更新时间:2023-10-29 01:42:28 27 4
gpt4 key购买 nike

我无法在 xml 文件中显示在包级别使用 @xmlSchema 注释配置的所有参数。例如,如果我设置:

@javax.xml.bind.annotation.XmlSchema (               
xmlns = {
@javax.xml.bind.annotation.XmlNs(prefix = "com",
namespaceURI="http://es.indra.transporte.common"),

@javax.xml.bind.annotation.XmlNs( prefix = "xsi",
namespaceURI="http://www.w3.org/2001/XMLSchema-instance"),

@javax.xml.bind.annotation.XmlNs( prefix = "ns2",
namespaceURI="http://es.indra.transporte.configuration"),
},
location = "http://es.indra.transporte.configuration StationNetwork.xsd",
elementFormDefault = javax.xml.bind.annotation.XmlNsForm.QUALIFIED
)
package es.indra.transporte.central.thalesinterface.common.beans;

我希望看到类似的东西:

<stationNetwork xmlns:ns2="http://es.indra.transporte.configuration"
xmlns:com="http://es.indra.transporte.common"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://es.indra.transporte.configuration StationNetwork.xsd">

但我得到以下输出:

<stationNetwork xmlns:com="http://es.indra.transporte.common">

我做错了什么?如何获得预期的输出?

最佳答案

您可以按如下方式写出架构位置:

Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://es.indra.transporte.configuration StationNetwork.xsd");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);

运行以下代码:

import javax.xml.bind.JAXBContext;
import javax.xml.bind.Marshaller;

public class Demo {

public static void main(String[] args) throws Exception {
JAXBContext jc = JAXBContext.newInstance(StationNetwork.class);

StationNetwork root = new StationNetwork();

Marshaller marshaller = jc.createMarshaller();
marshaller.setProperty(Marshaller.JAXB_SCHEMA_LOCATION, "http://es.indra.transporte.configuration StationNetwork.xsd");
marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshaller.marshal(root, System.out);
}

}

输出 - Metro (JAXB RI)

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<stationNetwork
xmlns:com="http://es.indra.transporte.common"
xmlns:ns2="http://es.indra.transporte.configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://es.indra.transporte.configuration StationNetwork.xsd"/>

输出 - EclipseLink JAXB (MOXy)

<?xml version="1.0" encoding="UTF-8"?>
<stationNetwork
xsi:schemaLocation="http://es.indra.transporte.configuration StationNetwork.xsd"
xmlns:ns2="http://es.indra.transporte.configuration"
xmlns:com="http://es.indra.transporte.common"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"/>

关于xml - @xmlSchema 注释与 jaxb 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4863786/

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