为什么我的XML架构没有验证?

时间:2017-11-27 10:36:29

标签: java xml soap polymorphism

我有以下Java类:

public class input{

@XmlElement(namespace="http://www.example.com/TopLevel")
public TopLevel TopLevel;
}

public class TopLevel{
    private String attribute;

    public void setAttribute(String attribute) {
        this.attribute = attribute;
    }

    public String getAttribute() {
        return attribute;
    }
}

import javax.xml.bind.annotation.XmlType;

@XmlType(namespace="http://org.classes.SubClass", name="SubClass")
public class SubClass extends TopLevel {
    private String attribute2;

    public String getAttribute2() {
        return attribute2;
    }

    public void setAttribute2(String attribute2) {
        this.attribute2 = attribute2;
    }
}

在部署类之后,我想要发出SOAP请求,并能够在XML中将TopLevel变形为SubClass。我的请求看起来像这样:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
... xmlns:top1="http://www.example.com/TopLevel" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Header/>
   <soapenv:Body>
      <top:TopSubClass_TestRequest>
         <par:input>
            <input>
               <top1:toplevel xsi:type="ns5:subclass" xmlns:ns5="http://org.classes.SubClass">
                  <attribute2>test</attribute2>
               </top1:toplevel>
            </input>
         </par:input>
      </top:TopSubClass_TestRequest>
   </soapenv:Body>
</soapenv:Envelope>

我期待的是SubClass将被映射到TopLevel并且我可以使用attribute2但由于某种原因,它不会验证。没关系似乎没有定义的请求中的命名空间。我跳过它们以使请求更容易阅读。验证问题发生在以下行:

<top1:toplevel xsi:type="ns5:subclass" xmlns:ns5="http://org.classes.SubClass">

话说:

Invalid xsi:type qname: 'subclass' in element Input

有人能指出我做错了什么吗?根据所有例子,我发现这应该是处理它的方法。

0 个答案:

没有答案