2014-06-14 7 views
8

मैं एक सोप अनुरोध किया है के साथ सत्यापित करते समय: -soapenv ठीक करने के लिए कैसे: XSD स्कीमा में लिफाफा मुद्दा सोप अनुरोध/प्रतिक्रिया

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v1="http://services.test.com/schema/MainData/V1"> 
    <soapenv:Header/> 
    <soapenv:Body> 
     <v1:retrieveDataRequest> 
     <v1:Id>58</v1:Id> 
     </v1:retrieveDataRequest> 
    </soapenv:Body> 
</soapenv:Envelope> 

और एक सोप प्रतिक्रिया: -

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <retrieveDataResponse xmlns="http://services.test.com/schema/MainData/V1"> 
     <Response>The Data retrieved from the Database</Response> 
     <Id>58</Id> 
     <Name>fdfdf</Name> 
     <Age>44</Age> 
     <Designation>sse</Designation> 
     </retrieveDataResponse> 
    </soap:Body> 
</soap:Envelope> 

अब मेरी XSD स्कीमा है: -

<?xml version="1.0" encoding="UTF-8"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
targetNamespace="http://services.test.com/schema/MainData/V1" 
xmlns:tns="http://services.test.com/schema/MainData/V1" elementFormDefault="qualified"> 

    <complexType name="dataRequest"> 
     <sequence> 
      <element name="Id" type="int"></element> 
      <element name="Name" type="string"></element> 
      <element name="Age" type="int"></element> 
      <element name="Designation" type="string"></element> 
     </sequence> 
    </complexType> 

    <complexType name="dataResponse"> 
     <sequence> 
      <element name="Response" type="string"></element> 
      <element name="Id" type="int"></element> 
      <element name="Name" type="string"></element> 
      <element name="Age" type="int"></element> 
      <element name="Designation" type="string"></element> 
     </sequence> 
    </complexType> 

    <element name="insertDataRequest" type="tns:dataRequest"></element> 

    <element name="insertDataResponse" type="tns:dataResponse"></element> 


    <element name="retrieveDataRequest" type="tns:retrieveRequest"></element> 

    <element name="retrieveDataResponse" type="tns:dataResponse"></element> 

    <complexType name="retrieveRequest"> 
     <sequence> 
      <element name="Id" type="int"></element> 
     </sequence> 
    </complexType> 

    <element name="updateDataRequest" type="tns:dataRequest"></element> 

    <element name="updateDataRespone" type="tns:dataResponse"></element> 

    <complexType name="deleteRequest"> 
     <sequence> 
      <element name="ID" type="int"></element> 
     </sequence> 
    </complexType> 

    <element name="deleteDataRequest" type="tns:deleteRequest"></element> 

    <element name="deleteDataResponse" type="tns:dataResponse"></element> 
</schema> 

अब मेरी समस्या नहीं है जब भी मैं इस XSD स्कीमा के खिलाफ मेरी सोप अनुरोध को मान्य करने की कोशिश करते हैं, तो निम्न त्रुटि मैं: -

Not valid. 
Error - Line 1, 133: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 133; cvc-elt.1: Cannot find the declaration of element 'soapenv:Envelope'. 

कृपया मदद ... मुझे पता है कि मैं अपने XSD स्कीमा में क्या संशोधित करना चाहिए ताकि सोप अनुरोध/प्रतिक्रिया XSD स्कीमा के सामने सत्यापित हो जाता है की आवश्यकता है ... जब से मैं इस में नया हूँ और सभी खोज करने की कोशिश की इंटरनेट पर, मैं उपयुक्त जवाब है ... कृपया मदद

+0

यह समाधान मूल रूप से XSD के विरुद्ध सोप XML सत्यापन है। एक्सएसडी के खिलाफ एक्सएमएल नहीं। –

उत्तर

10

सोप अनुरोध और प्रतिक्रिया के खिलाफ अपने स्कीमा मान्य नहीं है नहीं मिला है, लेकिन सोप स्कीमा। यदि आप इसे में आयात सोप ​​XSD अपने अनुरोध और प्रतिक्रिया मान्य करने के लिए अपने XSD का उपयोग कर सकते हैं:

<schema xmlns="http://www.w3.org/2001/XMLSchema" 
    targetNamespace="http://services.test.com/schema/MainData/V1" 
    xmlns:tns="http://services.test.com/schema/MainData/V1" elementFormDefault="qualified"> 

    <import namespace="http://schemas.xmlsoap.org/soap/envelope/" 
      schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"></import> 

... 

आप क्या करने की जरूरत नहीं है कि अगर आपके उदाहरण एक schemaLocation विशेषता का नामस्थान मानचित्रण वाणी दोनों स्कीमा (तुम्हारा और सोप स्कीमा) अपने स्थानों के लिए:

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://services.test.com/schema/MainData/V1 your-schema.xsd 
         http://schemas.xmlsoap.org/soap/envelope/ http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
     <retrieveDataResponse xmlns="http://services.test.com/schema/MainData/V1"> 
      <Response>The Data retrieved from the Database</Response> 
      <Id>58</Id> 
      <Name>fdfdf</Name> 
      <Age>44</Age> 
      <Designation>sse</Designation> 
     </retrieveDataResponse> 
    </soap:Body> 
</soap:Envelope> 
+0

दूसरा विकल्प एक ही परिणाम प्राप्त करता है। यह बस साबुन schemas खोजने के लिए जिम्मेदारियों को जिम्मेदार ठहराता है। ऐसे मामले में जहां आप अपनी स्कीमा नहीं बदल सकते थे (* आयात * जोड़ने के लिए) आप दूसरे विकल्प का उपयोग करके दोनों को अपने उदाहरणों से जोड़ सकते हैं और अभी भी फाइलों को मान्य कर सकते हैं। – helderdarocha

1

मैं एक ही समस्या है और मुझे स्कीमा आयात के लिए काम नहीं किया था। ढेर:

10:18:03,206 | DEBUG | iEsb | DefaultValidationErrorHandler | | 68 - org.apache.camel.camel-core - 2.6.0.fuse-03-01 | Validation error: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'soapenv:Envelope'. 
org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element 'soapenv:Envelope'. 
    at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:233)[:] 

मेरे जावा संस्करण था: 1.6.0_45। लेकिन मैं इसे XSD को डाउनलोड करने और एक फ़ाइल के रूप में आयात करने के माध्यम से हल किया:

<xsd:import namespace="http://schemas.xmlsoap.org/soap/envelope/" schemaLocation="envelope.xsd" /> 

शायद यह किसी को मदद मिलेगी।

0

तो, अंतिम समाधान है कि मेरे लिए काम किया आयात उपयोग कर रहा है: -

<import namespace="http://schemas.xmlsoap.org/soap/envelope/" 
      schemaLocation="http://schemas.xmlsoap.org/soap/envelope/"></import> 
संबंधित मुद्दे