我有一个带有CXF3.0.1的REST服务,它接受HTTP POST负载中的XML消息。XML负载被JAXB解封到一个对象。
我试图通过XSD模式验证XML,并且我已经在CXF中配置了XSD,但是我一直得到以下错误
发生JAXBException:cvc-elt.1:找不到元素“事件”的声明..CVC-ELT.1:找不到元素“事件”的声明。
注意:事件是我的根元素
我由此理解的是,CXF成功注册了XSD,但JAXB端出了问题。
有什么想法吗
谢谢
这是我的配置
@Path("incident")
public class CreateIncident {
@POST
@Consumes({ MediaType.APPLICATION_XML})
public Response createIncident(Incident incident) {
//code
}
}
@XmlRootElement(name = "incident")
@XmlAccessorType(XmlAccessType.FIELD)
public class Incident extends Event {
public Incident() {
super("incident");
}
@XmlElement
private String importProfile;
@XmlElement
private String eventTitle;
public String getImportProfile() {
return importProfile;
}
public void setImportProfile(String importProfile) {
this.importProfile = importProfile;
}
public String getEventTitle() {
return eventTitle;
}
public void setEventTitle(String eventTitle) {
this.eventTitle = eventTitle;
}
}
public class Event {
String eventType;
public Event(String eventType) {
this.eventType = eventType;
}
public String getEventType(){
return eventType;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<schema
xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.ba.com/schema/BAassystWrapper/incident"
elementFormDefault="qualified">
<element name="incident">
<complexType>
<sequence>
<element name="importProfile">
<simpleType>
<restriction base="string">
<minLength value="1"></minLength>
<maxLength value="254"></maxLength>
</restriction>
</simpleType>
</element>
<element name="eventTitle">
<simpleType>
<restriction base="string">
<minLength value="1"></minLength>
<maxLength value="890"></maxLength>
</restriction>
</simpleType>
</element>
</sequence>
</complexType>
</element>
</schema>
<incident>
<importProfile>Test text</importProfile>
<eventTitle>Test text</eventTitle>
</incident>
CXF配置
<jaxrs:server address="/">
<jaxrs:schemaLocations>
<jaxrs:schemaLocation>classpath:xsd/incident.xsd</jaxrs:schemaLocation>
</jaxrs:schemaLocations>
<jaxrs:serviceBeans>
<bean class="com.ba.sysman.services.events.CreateIncident"></bean>
</jaxrs:serviceBeans>
<jaxrs:features>
<cxf:logging/>
</jaxrs:features>
</jaxrs:server>
根元素需要是命名空间限定的。因此,传入的XML需要类似于:
<incident xmlns="http://www.ba.com/.......">
问题内容: 我正在尝试获取一个bean对象以使用Spring Security验证用户登录功能: 我applicationContext.xml的如下: 但我得到这个异常: 我很难理解这个问题。 我对XML进行了如下更改: 我现在收到此异常: 问题答案: 你的默认名称空间是,http://www.springframework.org/schema/security并且你配置了它,xmlns:be
目前,我正在为SOAP XML使用XSD,但当我在FREEFORMATTER上运行SOAP XML和XSD时。COM,我收到以下错误: Cvc-elt.1:找不到元素声明“肥皂:信封”...第1行,第170列 这是我的SOAP XML: 这是我的XSD: 我应该怎么做才能消除错误?
我对Liquibase完全陌生,我设置了一个相当简单的项目来熟悉Liquibase。不幸的是,我似乎在第一步就失败了,这非常令人沮丧。 首先是我的变更日志。xml: 除此之外,我还有一个酒鬼。特性: 我的pom。xml如下所示: 当我运行mvn包我得到以下错误: 项目结构为:项目结构 对我来说,这似乎是模式的问题,但我仔细检查了一下,无法找出问题。很可能我在这里错过了一些非常明显的东西。
我尝试使用http://www.freeformatter.com/xml-validator-xsd.html但由于上面的错误,它失败了。我发现了许多相同的问题,但没有一个答案对我有帮助。请帮助,正确的XML/XSD是什么? 我的XML:(只有最小的一个) 我的XSD:(只有最小的一个)
我正在尝试用Spring配置Hazelcast。我正在为Hazelcast的xml文件配置使用单独的文件,我检查了我在该文件中用xml配置的xsd,它包含“Hazelcast”元素,也按照xsd中的名称空间规范进行了配置,还添加了3.3版本的Hazelcast,Hazelcast all 我检查了xsd文件-http://www.hazelcast.com/schema/confighazelca
我在用给定的xsd验证对象时遇到问题。已从类生成xsd。 这里是例外消息 [org.xml.sax.SAXParseException:cvc elt.1:找不到元素“ACCESREFUSE”的声明。] 以下是XSD: 元素ACCESREFUSE是xml的根。 XML: 知道吗?谢谢