एक्सएमएल से JSON नीति के रनटाइम में गड़बड़ी की समस्या हल करना

Apigee Edge दस्तावेज़ देखा जा रहा है.
Apigee X दस्तावेज़ पर जाएं.
जानकारी

SourceUnavailable

गड़बड़ी का कोड

steps.xml2json.SourceUnavailable

गड़बड़ी के जवाब का मुख्य हिस्सा

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Source [source_variable] is not available",
        "detail": {
            "errorcode": "steps.xmltojson.SourceUnavailable"
        }
    }
}

गड़बड़ी के मैसेज का उदाहरण

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available",
        "detail": {
            "errorcode": "steps.xml2json.SourceUnavailable"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब एक्सएमएल से JSON नीति के <Source> एलिमेंट में बताया गया मैसेज या स्ट्रिंग वैरिएबल, इनमें से कोई एक हो:

  • दायरे से बाहर है (यह उस फ़्लो में उपलब्ध नहीं होता जहां नीति का इस्तेमाल किया जा रहा है) या
  • रिज़ॉल्व नहीं किया जा सकता (तय नहीं किया गया है)

उदाहरण के लिए, यह गड़बड़ी तब होती है, जब अनुरोध के फ़्लो में, एक्सएमएल से JSON नीति को लागू किया जाना हो, लेकिन <Source> एलिमेंट को response वैरिएबल पर सेट किया गया हो, जो अनुरोध के फ़्लो में मौजूद नहीं है.

संक्रमण की जांच

  1. एक्सएमएल से JSON नीति की उस जगह की पहचान करें जहां गड़बड़ी हुई. साथ ही, उस वैरिएबल के नाम की पहचान करें जो उपलब्ध नहीं है. आपको ये दोनों आइटम, गड़बड़ी के जवाब के faultstring एलिमेंट में मिल सकते हैं. उदाहरण के लिए, इस faultstring में, नीति का नाम Convert-XMLToJSON और वैरिएबल response है:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. एक्सएमएल से JSON नीति के एक्सएमएल में, पुष्टि करें कि <Source> एलिमेंट में सेट वैरिएबल का नाम, गड़बड़ी वाली स्ट्रिंग में पहचाने गए वैरिएबल के नाम से मैच होता है (ऊपर दिया गया चरण #1). उदाहरण के लिए, नीचे दी गई एक्सएमएल से JSON नीति में, <Source> एलिमेंट में response नाम के एक वैरिएबल के बारे में बताया गया है, जो faultstring में मौजूद वैरिएबल से मेल खाता है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>response</Source>
    </XMLToJSON>
    
  3. तय करें कि क्या <Source> एलिमेंट में इस्तेमाल किया गया वैरिएबल तय किया गया है और उस फ़्लो में उपलब्ध है जिसमें एक्सएमएल से JSON नीति को एक्ज़ीक्यूट किया जा रहा है.

  4. अगर वैरिएबल इनमें से कोई एक है:

    • दायरे से बाहर है (यह उस फ़्लो में उपलब्ध नहीं होता जहां नीति का इस्तेमाल किया जा रहा है) या
    • रिज़ॉल्व नहीं किया जा सकता (तय नहीं किया गया है)

    तो यही गड़बड़ी की वजह है.

    उदाहरण के लिए, मान लें कि ऊपर दिखाई गई एक्सएमएल से JSON नीति को request फ़्लो में लागू किया जाना चाहिए. याद रखें कि response वैरिएबल का इस्तेमाल, एक्सएमएल से JSON नीति के <Source> एलिमेंट में किया जाता है. रिस्पॉन्स वैरिएबल, सिर्फ़ रिस्पॉन्स फ़्लो में उपलब्ध होता है.

    अनुरोध के फ़्लो में रिस्पॉन्स वैरिएबल मौजूद नहीं है, इसलिए आपको गड़बड़ी कोड मिला है:

    steps.xml2json.SourceUnavailable
    

रिज़ॉल्यूशन

पक्का करें कि एक्सएमएल से JSON नीति के लागू न होने के <Source> एलिमेंट में वैरिएबल सेट किया गया हो. साथ ही, वह उस फ़्लो में मौजूद हो जहां नीति लागू होती है.

उदाहरण के तौर पर दी गई एक्सएमएल की JSON नीति को ऊपर दिखाने के लिए, <Source> एलिमेंट में बदलाव किया जा सकता है, ताकि अनुरोध के फ़्लो में मौजूद request वैरिएबल का इस्तेमाल किया जा सके:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>request</Source>
</XMLToJSON>

ExecutionFailed

गड़बड़ी का कोड

steps.xml2json.ExecutionFailed

गड़बड़ी के जवाब का मुख्य हिस्सा

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Execution failed. reason: Premature end of document while parsing at line [line_number](possibly  around char [character_number])",
        "detail": {
            "errorcode": "steps.xml2json.ExecutionFailed"
        }
    }
}

संभावित कारण

इस गड़बड़ी की ये वजहें हो सकती हैं:

Cause जानकारी
इनपुट पेलोड मौजूद नहीं है इनपुट पेलोड (एक्सएमएल) खाली है.
अमान्य या गलत इनपुट एक्सएमएल से JSON नीति में पास किया गया इनपुट (एक्सएमएल) अमान्य या गलत है.

वजह: इनपुट पेलोड मौजूद नहीं है

एक्सएमएल से JSON नीति में, अगर <Source> एलिमेंट में बताए गए वैरिएबल का कॉन्टेंट (पेलोड) खाली है, तो यह गड़बड़ी दिखती है.

उदाहरण के लिए, अगर एक्सएमएल से JSON नीति में <Source> एलिमेंट को request या response वैरिएबल के तौर पर सेट किया गया है और इसमें एक्सएमएल पेलोड शामिल होना चाहिए, तो यह गड़बड़ी तब होती है, जब पेलोड खाली हो.

संक्रमण की जांच

  1. उस एक्सएमएल से JSON नीति की पहचान करें जहां गड़बड़ी हुई. आपको यह जानकारी, गड़बड़ी के जवाब के faultstring एलिमेंट में मिलेगी. उदाहरण के लिए, यहां दिए गए faultstring में, नीति का नाम Convert-XMLToJSON है:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. JSON नीति के एक्सएमएल में काम न करने वाले एक्सएमएल में, <Source> एलिमेंट की जांच करें और तय किया गया वैरिएबल तय करें. उदाहरण के लिए, नीचे दी गई एक्सएमएल से JSON नीति में अनुरोध करने के लिए <Source> एलिमेंट सेट किया गया है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. देखें कि XMLToJSON नीति में <Source> एलिमेंट के लिए दिया गया वैरिएबल खाली है या नहीं. अगर वह खाली है, तो यही गड़बड़ी की वजह है.

    ऊपर एक्सएमएल से JSON नीति के उदाहरण में बताया गया है कि क्लाइंट ने जो अनुरोध पेलोड भेजा है वह खाली था.जैसे, अनुरोध का मुख्य हिस्सा.

    उदाहरण के लिए:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml"
    

    एक्सएमएल अनुरोध का पेलोड खाली है, इसलिए आपको गड़बड़ी का कोड मिला है:

    steps.xml2json.ExecutionFailed
    

    यह गड़बड़ी तब भी हो सकती है, जब <Source> एलिमेंट को रिस्पॉन्स पर सेट किया गया हो, लेकिन बैकएंड सर्वर से खाली पेलोड पास किया गया हो.

रिज़ॉल्यूशन

पक्का करें कि <Source> एलिमेंट के ज़रिए, एक्सएमएल को JSON नीति को भेजा गया इनपुट मान्य एक्सएमएल पेलोड हो और यह खाली न हो.

JSON नीति के सैंपल एक्सएमएल से जुड़ी समस्या को ठीक करने के लिए, एक मान्य एक्सएमएल पेलोड पास करें. उदाहरण के लिए:

  1. यहां दिए गए कॉन्टेंट के साथ City.xml नाम की एक फ़ाइल बनाएं:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. cURL निर्देश का इस्तेमाल करके, एपीआई कॉल करें:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltojson" -H "Content-Type: application/xml" -X POST -d @company.xml
    

वजह: अमान्य या गलत इनपुट

अगर एक्सएमएल से JSON नीति, अमान्य या गलत इनपुट को पार्स करती है, तो आपको यह गड़बड़ी मिलेगी.

उदाहरण के लिए, अगर नीचे दिए गए अमान्य एक्सएमएल को, एक्सएमएल से JSON नीति के इनपुट के तौर पर दिया गया है,

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>

आपको गड़बड़ी दिखाई देगी:

"faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"

संक्रमण की जांच

  1. उस एक्सएमएल से JSON नीति की पहचान करें जहां गड़बड़ी हुई. आपको यह जानकारी, गड़बड़ी के जवाब के faultstring एलिमेंट में मिलेगी. उदाहरण के लिए, यहां दिए गए faultstring में, नीति का नाम Convert-XMLToJSON है:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. JSON नीति के एक्सएमएल में बताए गए <Source> एलिमेंट की जांच करें. उदाहरण के लिए, नीचे दी गई एक्सएमएल से JSON नीति में <Source> एलिमेंट को request वैरिएबल पर सेट किया गया है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Options>
            <RecognizeNumber>true</RecognizeNumber>
            <RecognizeBoolean>true</RecognizeBoolean>
            <RecognizeNull>true</RecognizeNull>
        </Options>
        <OutputVariable>request</OutputVariable>
        <Source>request</Source>
    </XMLToJSON>
    
  3. पुष्टि करें कि एक्सएमएल टू JSON नीति के <Source> एलिमेंट में दिया गया इनपुट, एक मान्य एक्सएमएल पेलोड है या नहीं. अगर इनपुट अमान्य या गलत है, तो इस गड़बड़ी की वजह से ऐसा हो सकता है.

    ऊपर दिखाई गई एक्सएमएल से JSON नीति के उदाहरण में, city.xml फ़ाइल के ज़रिए वैरिएबल एक्सट्रैक्ट करने की नीति को यह अमान्य एक्सएमएल पास किया गया था:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    

    यहां एपीआई कॉल का सैंपल दिया गया है, जिससे पता चलता है कि अनुरोध कैसे पास किया गया था:

    curl -v "http://<org>-<env>.apigee.net/v1/testxmltpjson" -H "Content-Type: application/xml" -X POST -d @city.xml
    

    एपीआई को भेजा गया एक्सएमएल पेलोड अमान्य है, क्योंकि एक्सएमएल में <root> एलिमेंट के लिए एंड टैग मौजूद नहीं है. इसलिए आपको गड़बड़ी कोड मिलता है:

    steps.xml2json.ExecutionFailed
    

    यह गड़बड़ी तब भी हो सकती है, जब <Source> एलिमेंट को रिस्पॉन्स के तौर पर सेट किया गया हो, लेकिन बैकएंड सर्वर से मिलने वाला एक्सएमएल रिस्पॉन्स पेलोड अमान्य या गलत हो.

रिज़ॉल्यूशन

पक्का करें कि <Source> एलिमेंट के ज़रिए, एक्सएमएल को JSON नीति में भेजा गया इनपुट मान्य है और गलत नहीं है.

ऊपर बताई गई JSON नीति के सैंपल एक्सएमएल से जुड़ी समस्या को ठीक करने के लिए, मान्य एक्सएमएल पेलोड अनुरोध को इस तरह से पास करें:

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <City>Bengaluru</City>
   <Name>Apigee</Name>
   <Pincode>560016</Pincode>
</root>

OutputVariableIsNotAvailable

गड़बड़ी का कोड

steps.xml2json.OutputVariableIsNotAvailable

गड़बड़ी के जवाब का मुख्य हिस्सा

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

गड़बड़ी के मैसेज का उदाहरण

{
    "fault": {
        "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available.",
        "detail": {
            "errorcode": "steps.xml2json.OutputVariableIsNotAvailable"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब एक्सएमएल से JSON नीति के <Source> एलिमेंट में बताया गया वैरिएबल, टाइप की स्ट्रिंग का हो और <OutputVariable> एलिमेंट तय न किया गया हो. <OutputVariable> एलिमेंट तब ज़रूरी है, जब <Source> एलिमेंट में तय किए गए वैरिएबल का टाइप string हो.

संक्रमण की जांच

  1. एक्सएमएल से JSON नीति के उस हिस्से की पहचान करें जहां गड़बड़ी हुई है. यह आपको गड़बड़ी के जवाब के faultstring एलिमेंट में दिखेगा. उदाहरण के लिए, यहां दिए गए faultstring में, नीति का नाम Convert-XMLToJSON है:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. एक्सएमएल से JSON नीति के अपडेट में, इस बात की पुष्टि की जाती है कि <OutputVariable> मौजूद है या नहीं.

    यहां JSON नीति के लिए एक्सएमएल का एक सैंपल दिया गया है, जिसमें <OutputVariable> एलिमेंट नहीं है.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
        <DisplayName>Convert-XMLToJSON</DisplayName>
        <Properties/>
        <Format>google</Format>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
    
  3. <Source> एलिमेंट में बताए गए वैरिएबल का टाइप तय करें:

    1. एपीआई प्रॉक्सी बंडल में वह कोड ढूंढें जहां सबसे पहले वैरिएबल तय किया गया था.
    2. यह पता लगाने के बाद कि वैरिएबल को किस नीति के तहत तय किया गया है और सबसे पहले भरा गया है, आपको नीचे बताए गए तरीके से वैरिएबल का टाइप तय करना होगा:
      1. टाइप एट्रिब्यूट (अगर मौजूद हो) की वैल्यू देखें.
      2. अगर टाइप एट्रिब्यूट मौजूद नहीं है, तो वैरिएबल को स्ट्रिंग माना जाता है.
    3. अगर वैरिएबल का टाइप string है, तो यही गड़बड़ी की वजह है. वैरिएबल के रेफ़रंस में जाकर, सामान्य वैरिएबल और उनके टाइप के बारे में जाना जा सकता है.

    उदाहरण के लिए, ऊपर एक्सएमएल से JSON नीति में TrackingNumber वैरिएबल देखें. यह स्ट्रिंग टाइप की होती है. अब, मैसेज असाइन करने की उस नीति का इस्तेमाल करें जिसका इस्तेमाल, TrackingNumber नाम के वैरिएबल की वैल्यू सेट करने के लिए किया जाता है. जैसा कि यहां दिखाया गया है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    ध्यान दें कि <AssignVariable> के ज़रिए सेट किया गया वैरिएबल टाइप स्ट्रिंग है. इसलिए, वैरिएबल TrackingNumber एक तरह की स्ट्रिंग है.

    अब याद रखें कि TrackingNumber वैरिएबल का इस्तेमाल, एक्सएमएल टू JSON नीति के <Source> एलिमेंट में किया जाता है:

    <Source>TrackingNumber</Source>
    

    TrackingNumber, स्ट्रिंग टाइप की है और नीति में <OutputVariable> मौजूद नहीं है. इसलिए, आपको गड़बड़ी का यह कोड मिलेगा:

    steps.xml2json.OutputVariableIsNotAvailable
    

रिज़ॉल्यूशन

पक्का करें कि अगर XMLToJSON नीति के <Source> एलिमेंट में दिया गया वैरिएबल, टाइप की स्ट्रिंग का है, तो इस मामले में <OutputVariable> एलिमेंट ज़रूरी है.

ऊपर बताए गए तरीके से एक्सएमएल में JSON नीति को ठीक करने के लिए, <OutputVariable> एलिमेंट शामिल करें.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="Convert-XMLToJSON">
    <DisplayName>Convert-XMLToJSON</DisplayName>
    <Properties/>
    <Format>google</Format>
    <OutputVariable>response</OutputVariable>
    <Source>TrackingNumber</Source>
</XMLToJSON>

InCompatibleTypes

गड़बड़ी का कोड

steps.xml2json.InCompatibleTypes

गड़बड़ी के जवाब का मुख्य हिस्सा

{
    "fault": {
        "faultstring": "XMLToJSON[policy_name]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

गड़बड़ी के मैसेज का उदाहरण

{
    "fault": {
        "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type.",
        "detail": {
            "errorcode": "steps.xml2json.InCompatibleTypes"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब <Source> एलिमेंट और <OutputVariable> एलिमेंट में तय किए गए वैरिएबल का टाइप एक जैसा न हो. यह ज़रूरी है कि <Source> एलिमेंट और <OutputVariable> एलिमेंट में शामिल वैरिएबल के टाइप मेल खाते हों.

The valid types are message and string.

संक्रमण की जांच

  1. एक्सएमएल से JSON नीति के उस हिस्से की पहचान करें जहां गड़बड़ी हुई है. यह आपको गड़बड़ी के जवाब के faultstring एलिमेंट में दिखेगा. उदाहरण के लिए, यहां दिए गए faultstring में, नीति का नाम XMLToJSON_CheckType है:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. ऐसे एक्सएमएल से JSON नीति में जिन्हें एक्सपोर्ट नहीं किया जा सका, <OutputVariable> में दी गई वैल्यू पर ध्यान दें.

    यहां XMLToJSON नीति का एक सैंपल दिया गया है, जिसमें <OutputVariable> एलिमेंट मौजूद नहीं है

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>request</OutputVariable>
        <Source>TrackingNumber</Source>
    </XMLToJSON>
    
  3. <Source> और <OutputVariable> एलिमेंट में बताए गए वैरिएबल का टाइप तय करें:

    1. एपीआई प्रॉक्सी बंडल में वह कोड ढूंढें जहां हर वैरिएबल को सबसे पहले तय किया गया था.
    2. यह पता लगाने के बाद कि वैरिएबल को किस नीति के तहत तय किया गया है और सबसे पहले भरा गया है, आपको नीचे बताए गए तरीके से वैरिएबल का टाइप तय करना होगा:
      1. टाइप एट्रिब्यूट (अगर मौजूद हो) की वैल्यू देखें.
      2. अगर टाइप एट्रिब्यूट मौजूद नहीं है, तो वैरिएबल को स्ट्रिंग माना जाता है.
    3. अगर <Source> में बताए गए वैरिएबल का टाइप string है, जबकि <OutputVariable> का टाइप मैसेज है या <OutputVariable>, मैसेज टाइप है, तो यही गड़बड़ी है. वैरिएबल के रेफ़रंस में जाकर, सामान्य वैरिएबल और उनके टाइप के बारे में जाना जा सकता है.

    उदाहरण के लिए, मैसेज असाइन करने की एक नीति का इस्तेमाल करें. इसका इस्तेमाल, TrackingNumber नाम के वैरिएबल की वैल्यू सेट करने के लिए किया जाता है. जैसा कि यहां दिखाया गया है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
        <DisplayName>Assign_TrackingNumber</DisplayName>
        <Properties/>
        <AssignVariable>
            <Name>TrackingNumber</Name>
            <Value><![CDATA[<Code>560075393539898</Code>]]></Value>
            <Ref/>
        </AssignVariable>
        <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
        <AssignTo createNew="false" transport="http" type="request"/>
    </AssignMessage>
    

    ध्यान दें कि <AssignVariable> के ज़रिए सेट किया गया वैरिएबल टाइप स्ट्रिंग है. इसलिए, वैरिएबल TrackingNumber एक तरह की स्ट्रिंग है.

    अब याद रखें कि TrackingNumber वैरिएबल का इस्तेमाल, XMLToJSON नीति के <Source> एलिमेंट में किया जाता है:

    <Source>TrackingNumber</Source>
    

    इसी तरह, याद रखें कि request वैरिएबल का इस्तेमाल, एक्सएमएल टू JSON नीति के <OutputVariable> एलिमेंट में किया जाता है:

    <OutputVariable>request</OutputVariable>
    

    TrackingNumber का टाइप string है, जबकि response वैरिएबल का टाइप message है. इसलिए, वैरिएबल काम नहीं करते, इसलिए आपको गड़बड़ी का कोड मिलेगा:

    steps.xml2json.InCompatibleTypes
    

    ऊपर दी गई गड़बड़ी तब भी आ सकती है, जब <Source> एलिमेंट में मौजूद वैरिएबल की वैल्यू message हो, लेकिन <OutputVariable> एलिमेंट में वैरिएबल टाइप स्ट्रिंग की हो.

रिज़ॉल्यूशन

पक्का करें कि <Source> एलिमेंट और <OutputVariable> एलिमेंट में तय किए गए वैरिएबल का टाइप हमेशा एक जैसा हो. यह ज़रूरी है कि <Source> एलिमेंट और <OutputVariable> एलिमेंट में शामिल वैरिएबल के टाइप मेल खाते हों.

ऊपर बताई गई एक्सएमएल से JSON नीति को सही करने के लिए, मैसेज असाइन करने की नीति का इस्तेमाल करके string टाइप का कोई दूसरा वैरिएबल TrackingNumber_output एलान करें. साथ ही, इस वैरिएबल का इस्तेमाल एक्सएमएल टू JSON नीति के <OutputVariable> एलिमेंट में करें.

मैसेज असाइन करने की नीति में बदलाव:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<AssignMessage async="false" continueOnError="false" enabled="true" name="Assign_TrackingNumber">
    <DisplayName>Assign_TrackingNumber</DisplayName>
    <Properties/>
    <AssignVariable>
        <Name>TrackingNumber</Name>
        <Value><![CDATA[<Code>560098</Code>]]></Value>
        <Ref/>
    </AssignVariable>
    <AssignVariable>
        <Name>TrackingNumber_output</Name>
        <Ref/>
    </AssignVariable>
    <IgnoreUnresolvedVariables>true</IgnoreUnresolvedVariables>
    <AssignTo createNew="false" transport="http" type="request"/>
</AssignMessage>

XMLToJSON नीति में बदलाव किया गया:

  <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
  <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
      <DisplayName>XMLToJSON_CheckType</DisplayName>
      <Properties/>
      <Format>google</Format>
      <OutputVariable>TrackingNumber_output</OutputVariable>
      <Source>TrackingNumber</Source>
  </XMLToJSON>

InvalidSourceType

गड़बड़ी का कोड

steps.xml2json.InvalidSourceType

गड़बड़ी के जवाब का मुख्य हिस्सा

{
    "fault": {
        "faultstring": "XMLToJSON[class invalid_class]: Invalid source type class invalid_class. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

गड़बड़ी के मैसेज का उदाहरण

{
    "fault": {
        "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string].",
        "detail": {
            "errorcode": "steps.xml2json.InvalidSourceType"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब <Source> एलिमेंट को तय करने के लिए, इस्तेमाल किए गए वैरिएबल का टाइप अमान्य हो.message और string वैरिएबल के मान्य टाइप हैं.

संक्रमण की जांच

  1. एक्सएमएल से JSON नीति में इस्तेमाल किए गए अमान्य सोर्स टाइप की पहचान करें. आपको यह जानकारी गड़बड़ी के मैसेज से मिल सकती है. उदाहरण के लिए, यहां दी गई गड़बड़ी में अमान्य टाइप एक पूर्णांक है.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. उस एपीआई प्रॉक्सी में, JSON नीतियों के सभी एक्सएमएल की जांच करें जहां गड़बड़ी हुई है. फ़ेल हो चुके एक्सएमएल से JSON नीति में, <Source> में दिए गए वैरिएबल का नाम नोट करें.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON_CheckType">
        <DisplayName>XMLToJSON_CheckType</DisplayName>
        <Properties/>
        <Format>google</Format>
        <OutputVariable>response</OutputVariable>
        <Source>BookCode</Source>
    </XMLToJSON>
    
  3. <Source> एलिमेंट में बताए गए वैरिएबल का टाइप तय करें:

    1. एपीआई प्रॉक्सी बंडल में वह कोड ढूंढें जहां पहले इस वैरिएबल को तय किया गया था.
    2. यह पता लगाने के बाद कि वैरिएबल को किस नीति के तहत तय किया गया है और सबसे पहले भरा गया है, आपको नीचे बताए गए तरीके से वैरिएबल का टाइप तय करना होगा:
      1. टाइप एट्रिब्यूट (अगर मौजूद हो) की वैल्यू देखें.
      2. अगर टाइप एट्रिब्यूट मौजूद नहीं है, तो वैरिएबल को स्ट्रिंग माना जाता है.
    3. अगर <Source> में दिए गए वैरिएबल का टाइप, न तो message है और न ही string है, तो इस गड़बड़ी की वजह से ऐसा होगा. वैरिएबल के रेफ़रंस में जाकर, सामान्य वैरिएबल और उनके टाइप के बारे में जाना जा सकता है.

    उदाहरण के लिए, एक ExtractVariables नीति पर विचार करें जिसका इस्तेमाल एक्सएमएल पेलोड से वैल्यू निकालने के लिए किया गया है. साथ ही, वैरिएबल BookCode की वैल्यू को integer टाइप पर सेट करें, जैसा कि यहां दिखाया गया है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ExtractVariables async="false" continueOnError="false" enabled="true" name="Extract_BookCode">
        <DisplayName>Extract_BookCode</DisplayName>
        <Properties/>
        <Source>request</Source>
        <XMLPayload stopPayloadProcessing="false">
            <Variable name="BookCode" type="integer">
                <XPath>/root/BookCode</XPath>
            </Variable>
        </XMLPayload>
    </ExtractVariables>
    

    अब याद रखें कि BookCode वैरिएबल का इस्तेमाल, एक्सएमएल टू JSON नीति के <Source> एलिमेंट में किया जाता है:

    <Source>BookCode</Source>
    

    इस वैरिएबल का टाइप Integer है, जो कि मान्य <Source> टाइप नहीं है, इसलिए एपीआई प्रॉक्सी, गड़बड़ी की वजह से काम नहीं कर रहा:

    steps.xml2json.InvalidSourceType
    

रिज़ॉल्यूशन

पक्का करें कि <Source> एलिमेंट की जानकारी देने के लिए, इस्तेमाल किए गए वैरिएबल का टाइप मान्य है. <Source> के मान्य टाइप, message और string हैं.

एक्सएमएल से JSON नीति के साथ ऊपर दी गई गड़बड़ी से बचने के लिए, आपके पास request वैरिएबल का इस्तेमाल करने का विकल्प है. यह वैरिएबल message टाइप या कोई ऐसी अन्य स्ट्रिंग है जो मान्य एक्सएमएल पेलोड है.