当前位置: 首页 > 知识库问答 >
问题:

发生带有CXF-JAXBException的JAXB模式验证错误:CVC-ELT.1:找不到元素的声明

曹骞仕
2023-03-14

我有一个带有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>

共有1个答案

郑博
2023-03-14

根元素需要是命名空间限定的。因此,传入的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: 知道吗?谢谢