多个命名空间包信息 Java
Multiple namespace package info Java
我有这个包裹信息
/**
* Created by mflamant on 13/02/2017.
*/
@javax.xml.bind.annotation.XmlSchema(namespace = "namespace1", xmlns = {@XmlNs(prefix = "ns4", namespaceURI = "namespace1")}, elementFormDefault = XmlNsForm.QUALIFIED)
package com.cisco.adt.portal.data.model.API.Equipment;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
但我想有 2 个命名空间,但我尝试这样做:
/**
* Created by mflamant on 13/02/2017.
*/
@javax.xml.bind.annotation.XmlSchema(namespace = "namespace1", xmlns = {@XmlNs(prefix = "ns4", namespaceURI = "namespace1")}, elementFormDefault = XmlNsForm.QUALIFIED)
@javax.xml.bind.annotation.XmlSchema(namespace = "namespace2", xmlns = {@XmlNs(prefix = "ns4", namespaceURI = "namespace2")}, elementFormDefault = XmlNsForm.QUALIFIED)
package com.cisco.adt.portal.data.model.API.Equipment;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
但是我有一个错误:"Duplicate annotation",是否可以有 2 个命名空间?
谢谢。
您可以有两个名称空间,但前缀不能相同。
我建议在模型所在的包中添加 package-info.java
文件,而不是在 class 中使用注释。
例如,一旦我构建了一个站点地图,我需要添加更多的命名空间,因为 google 搜索控制台的严格检查规则。
在 package-info.java
文件中,我使用以下语法添加了更多命名空间。
@XmlSchema(
xmlns = {
@XmlNs(prefix = "video", namespaceURI = "http://www.google.com/schemas/sitemap-video/1.1"),
@XmlNs(prefix = "", namespaceURI = "http://www.sitemaps.org/schemas/sitemap/0.9")
}
)
/*
* xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
* xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
*/
package com.example.myapplication.model.sitemap.pojo;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlSchema;
您应该按照文档使用注释数组:
https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlSchema.html
例如:
@javax.xml.bind.annotation.XmlSchema (
xmlns = {
@javax.xml.bind.annotation.XmlNs(prefix = "po",
namespaceURI="http://www.example.com/myPO1"),
@javax.xml.bind.annotation.XmlNs(prefix="xs",
namespaceURI="http://www.w3.org/2001/XMLSchema")
}
)
java 文档在 xmlns 块的末尾确实有一个错误的括号,我已在上面的示例中更正了这一点。
我有这个包裹信息
/**
* Created by mflamant on 13/02/2017.
*/
@javax.xml.bind.annotation.XmlSchema(namespace = "namespace1", xmlns = {@XmlNs(prefix = "ns4", namespaceURI = "namespace1")}, elementFormDefault = XmlNsForm.QUALIFIED)
package com.cisco.adt.portal.data.model.API.Equipment;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
但我想有 2 个命名空间,但我尝试这样做:
/**
* Created by mflamant on 13/02/2017.
*/
@javax.xml.bind.annotation.XmlSchema(namespace = "namespace1", xmlns = {@XmlNs(prefix = "ns4", namespaceURI = "namespace1")}, elementFormDefault = XmlNsForm.QUALIFIED)
@javax.xml.bind.annotation.XmlSchema(namespace = "namespace2", xmlns = {@XmlNs(prefix = "ns4", namespaceURI = "namespace2")}, elementFormDefault = XmlNsForm.QUALIFIED)
package com.cisco.adt.portal.data.model.API.Equipment;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlNsForm;
但是我有一个错误:"Duplicate annotation",是否可以有 2 个命名空间?
谢谢。
您可以有两个名称空间,但前缀不能相同。
我建议在模型所在的包中添加 package-info.java
文件,而不是在 class 中使用注释。
例如,一旦我构建了一个站点地图,我需要添加更多的命名空间,因为 google 搜索控制台的严格检查规则。
在 package-info.java
文件中,我使用以下语法添加了更多命名空间。
@XmlSchema(
xmlns = {
@XmlNs(prefix = "video", namespaceURI = "http://www.google.com/schemas/sitemap-video/1.1"),
@XmlNs(prefix = "", namespaceURI = "http://www.sitemaps.org/schemas/sitemap/0.9")
}
)
/*
* xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
* xmlns:video="http://www.google.com/schemas/sitemap-video/1.1"
*/
package com.example.myapplication.model.sitemap.pojo;
import javax.xml.bind.annotation.XmlNs;
import javax.xml.bind.annotation.XmlSchema;
您应该按照文档使用注释数组:
https://docs.oracle.com/javase/7/docs/api/javax/xml/bind/annotation/XmlSchema.html
例如:
@javax.xml.bind.annotation.XmlSchema (
xmlns = {
@javax.xml.bind.annotation.XmlNs(prefix = "po",
namespaceURI="http://www.example.com/myPO1"),
@javax.xml.bind.annotation.XmlNs(prefix="xs",
namespaceURI="http://www.w3.org/2001/XMLSchema")
}
)
java 文档在 xmlns 块的末尾确实有一个错误的括号,我已在上面的示例中更正了这一点。