2013-05-23 3 views
5

Ich bin ein Java-Programmierer neu in XML und Web-Services. Ich versuche, ein XML-Dokument zu erstellen, das einer XSD (die ich nicht geschrieben habe) entspricht, die das folgende Snippet enthält. Ich möchte diesen Webservice anrufen, um ein Mailing zu kopieren. Es gibt ein Element namens copy, das vom abstrakten Typ "tns: CopyRequest" ist. Da der Typ des Elements abstrakt ist, sagt Eclipse, dass ich keinen erstellen kann. Es gibt einen CopyMailingRequest-Typ (der klingt, als ob er das ist, was ich will), aber ich bin mir nicht sicher, wie ich ihn instanziieren soll, da es kein Element gibt, das diesen Typ erweitert. Was vermisse ich?So instanziieren Sie ein XSD-Element eines abstrakten Typs

<xs:element name="copy" nillable="true" type="tns:CopyRequest"/> 

<xs:complexType name="CopyMailingRequest"> 
    <xs:complexContent> 
    <xs:extension base="tns:CopyRequest"> 
     <xs:sequence> 
     <xs:element name="fromId" type="tns:MailingId"/> 
     </xs:sequence> 
    </xs:extension> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="StandardMailingId"> 
    <xs:complexContent> 
    <xs:extension base="tns:MailingId"/> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="MailingId"> 
    <xs:complexContent> 
    <xs:extension base="tns:ObjectId"/> 
    </xs:complexContent> 
</xs:complexType> 

<xs:complexType name="CopyRequest" abstract="true"> 
    <xs:sequence> 
    <xs:element name="newName" type="xs:string"/> 
    </xs:sequence> 
</xs:complexType> 

Antwort

9

Um es einfacher zu machen, unten zu folgen, ein minimal modifizierte Schema (hinzugefügt, um das Schema-Element mit einer beliebigen Target, und fügte hinzu, eine Dummy-Definition für ObjectId):

<?xml version="1.0" encoding="utf-8" ?> 
<!-- XML Schema generated by QTAssistant/XSD Module (http://www.paschidev.com) --> 
<xs:schema targetNamespace="http://tempuri.org/XMLSchema.xsd" xmlns:tns="http://tempuri.org/XMLSchema.xsd" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
    <xs:element name="copy" nillable="true" type="tns:CopyRequest"/> 

    <xs:complexType name="CopyMailingRequest"> 
     <xs:complexContent> 
      <xs:extension base="tns:CopyRequest"> 
       <xs:sequence> 
        <xs:element name="fromId" type="tns:MailingId"/> 
       </xs:sequence> 
      </xs:extension> 
     </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="StandardMailingId"> 
     <xs:complexContent> 
      <xs:extension base="tns:MailingId"/> 
     </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="MailingId"> 
     <xs:complexContent> 
      <xs:extension base="tns:ObjectId"/> 
     </xs:complexContent> 
    </xs:complexType> 

    <xs:complexType name="ObjectId"/> 

    <xs:complexType name="CopyRequest" abstract="true"> 
     <xs:sequence> 
      <xs:element name="newName" type="xs:string"/> 
     </xs:sequence> 
    </xs:complexType> 
</xs:schema> 

Dies ist, was ein automatisch (und gültigen) erzeugte XML-Beispiel für die XSD aussehen würde:

hier
<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
<!-- Sample XML generated by QTAssistant (http://www.paschidev.com) --> 
<copy xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="CopyMailingRequest" xmlns="http://tempuri.org/XMLSchema.xsd"> 
    <newName>newName1</newName> 
    <fromId/> 
</copy> 

der wichtigste Punkt ist xsi:type="CopyMailingRequest"; So stellen Sie in Ihrem Szenario einen konkreten Typ bereit.

Verwandte Themen