تحديد وحلّ المشاكل المتعلقة بوقت تشغيل سياسة XML إلى 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"
        }
    }
}

السبب

يحدث هذا الخطأ إذا كان متغيّر message أو السلسلة المحدَّد في العنصر <Source> ضِمن سياسة XML إلى JSON:

  • خارج النطاق (غير متاح في المسار المحدّد الذي يتم فيه تنفيذ السياسة) أو
  • لا يمكن حلها (غير محددة)

على سبيل المثال، يحدث هذا الخطأ إذا كان من المفترض تنفيذ سياسة XML إلى JSON في مسار الطلب، ولكن تم ضبط العنصر <Source> على المتغيّر response، وهو غير متوفّر في مسار الطلب.

التشخيص

  1. حدِّد سياسة XML إلى JSON التي حدث فيها الخطأ واسم المتغيّر غير المتوفّر. يمكنك العثور على كلا العنصرَين في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في faultstring التالية، يكون اسم السياسة هو Convert-XMLToJSON والمتغير response:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. في سياسة XML التي تعذّرت معالجتها من خلال XML، تأكَّد من أنّ اسم المتغيّر الذي تم تحديده في العنصر <Source> يتطابق مع اسم المتغيّر المحدّد في سلسلة الخطأ (الخطوة 1 أعلاه). على سبيل المثال، تحدِّد سياسة XML التالية إلى JSON متغيّرًا يُسمّى response في العنصر <Source>، والذي يتطابق مع ما في 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> محدّدًا ومتاحًا في التدفق الذي يتم فيه تنفيذ السياسة من XML إلى JSON.

  4. إذا كان المتغير إما:

    • خارج النطاق (غير متاح في المسار المحدّد الذي يتم فيه تنفيذ السياسة) أو
    • لا يمكن حلها (غير محددة)

    فسيكون هذا هو سبب الخطأ.

    على سبيل المثال، لنفترض أنّه من المفترض تنفيذ سياسة XML إلى JSON الموضحة أعلاه في مسار الطلب. تذكَّر أنّ المتغيّر response يُستخدم في العنصر <Source> ضِمن سياسة XML إلى JSON. لا يتوفّر متغيّر الاستجابة إلا في مسار الاستجابة.

    نظرًا لعدم وجود متغير الاستجابة في مسار الطلب، ستتلقى رمز الخطأ:

    steps.xml2json.SourceUnavailable
    

درجة الدقّة

يجب التأكّد من أنّ المتغيّر الذي تم ضبطه في العنصر <Source> لسياسة XML إلى JSON التي تعذّر نقلها قد تم تحديده ويوجد في المسار الذي يتم فيه تنفيذ السياسة.

لتصحيح مثال سياسة XML إلى 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"
        }
    }
}

الأسباب المحتملة

الأسباب المحتملة لهذا الخطأ هي:

السبب الوصف
حمولة البيانات غير المضمّنة حمولة البيانات المدخلة (XML) فارغة.
إدخال غير صالح أو مكتوب بشكل غير صحيح الإدخال (XML) الذي تم تمريره إلى سياسة XML إلى JSON غير صالح أو مكتوب بشكلٍ غير صحيح.

السبب: حمولة البيانات غير متوفرة

سيحدث هذا الخطأ في سياسة XML إلى JSON إذا كان المحتوى (الحمولة) في المتغيّر المحدَّد في العنصر <Source> فارغًا.

على سبيل المثال، إذا تم ضبط العنصر <Source> في السياسة من XML إلى JSON على أنّه المتغيّر request أو response ومن المفترض أن يحتوي على حمولة XML، يحدث هذا الخطأ إذا كانت الحمولة فارغة.

التشخيص

  1. حدِّد سياسة XML إلى 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. افحص العنصر <Source> في سياسة XML التي تعذّر نقلها إلى JSON وحدِّد المتغيّر المحدّد. على سبيل المثال، تتضمّن سياسة XML التالية إلى 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. تحقَّق مما إذا كان المتغيّر المحدّد للعنصر <Source> في سياسة XMLToJSON فارغًا. إذا كان فارغًا، هذا هو سبب الخطأ.

    في نموذج سياسة XML إلى JSON الموضح أعلاه، كانت حمولة الطلب (أي نص الطلب) التي أرسلها العميل فارغة.

    مثال:

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

    ستتلقّى رمز الخطأ التالي لأنّ حمولة بيانات طلب XML فارغة:

    steps.xml2json.ExecutionFailed
    

    يمكن أن يحدث هذا الخطأ أيضًا إذا تم ضبط العنصر <Source> على الاستجابة، ولكن يتم تمرير حمولة بيانات فارغة من خلال خادم الخلفية.

درجة الدقّة

تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة XML إلى JSON عبر العنصر <Source> هو حمولة بيانات XML صالحة وغير فارغة.

لحلّ المشكلة المتعلّقة بنموذج سياسة XML إلى JSON، عليك ضبط حمولة بيانات XML صالحة. مثال:

  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
    

السبب: إدخال غير صالح أو مشوه

إذا كانت سياسة XML إلى JSON تحلّل إدخالاً غير صالح أو مكتوب بشكلٍ غير صحيح، ستظهر لك رسالة الخطأ هذه.

على سبيل المثال، إذا تم تقديم ملف XML التالي غير الصالح كإدخال في سياسة XML إلى 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. حدِّد سياسة XML إلى 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. تحقَّق من العنصر <Source> المحدّد في سياسة XML التي تعذّر نقلها إلى JSON. على سبيل المثال، تتضمّن سياسة XML التالية إلى 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. تحقَّق مما إذا كان الإدخال المحدّد في العنصر <Source> لسياسة XML إلى JSON هو حمولة بيانات XML صالحة. إذا كان الإدخال غير صالح أو مكتوبًا بشكلٍ غير صحيح، هذا هو سبب الخطأ.

    في مثال سياسة XML إلى JSON الموضح أعلاه، تم تمرير ملف XML غير الصالح التالي إلى سياسة استخراج المتغيرات عبر الملف 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
    

    إنّ حمولة XML التي تم تمريرها إلى واجهة برمجة التطبيقات غير صالحة، لأنّ ملف XML لا يتضمّن علامة نهاية للعنصر <root>. لذلك تتلقى رمز الخطأ:

    steps.xml2json.ExecutionFailed
    

    يمكن أن يحدث هذا الخطأ أيضًا إذا تم ضبط العنصر <Source> للاستجابة ولكن كانت حمولة بيانات استجابة XML الواردة من الخادم الخلفية غير صالحة أو مكتوبة بشكلٍ غير صحيح.

درجة الدقّة

تأكَّد من أنّ الإدخال الذي تم تمريره إلى سياسة XML إلى JSON عبر العنصر <Source> صالح وغير مكتوب بشكلٍ غير صحيح.

لحلّ المشكلة المتعلّقة بنموذج من سياسة XML إلى JSON التي تمت مناقشتها أعلاه، عليك تمرير طلب صالح لحمولة XML على النحو التالي:

<?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"
        }
    }
}

السبب

يحدث هذا الخطأ إذا كان المتغيّر المحدّد في العنصر <Source> لسياسة XML إلى JSON من نوع سلسلة ولم يتم تعريف العنصر <OutputVariable>. يكون العنصر <OutputVariable> إلزاميًا عندما يكون المتغيّر المحدّد في العنصر <Source> من النوع string.

التشخيص

  1. حدِّد سياسة XML إلى JSON التي حدث فيها الخطأ. يمكنك العثور على هذه السمة في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في faultstring التالية، يكون اسم السياسة هو Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. في سياسة XML إلى JSON التي تعذّر تنفيذها، تحقَّق مما إذا كانت سياسة <OutputVariable> غير متوفّرة.

    في ما يلي نموذج من سياسة XML التي تتضمّن عنصر <OutputVariable> غير مضمَّن في سياسة JSON.

    <?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. تحقق من قيمة سمة type (إن كانت موجودة).
      2. إذا كانت سمة type غير موجودة، فسيتم اعتبار المتغير على أنه سلسلة.
    3. إذا كان نوع المتغيّر هو string، يكون هذا هو سبب الخطأ. يمكنك الاطّلاع على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.

    على سبيل المثال، اطّلع على متغيِّر TrackingNumber في سياسة XML إلى JSON أعلاه. وهو من النوع سلسلة. والآن، ضع في الاعتبار سياسة "تعيين رسالة" التي تُستخدَم لضبط قيمة متغيّر يُسمّى 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 يُستخدم في العنصر <Source> في سياسة XML إلى JSON:

    <Source>TrackingNumber</Source>
    

    بما أنّ TrackingNumber من نوع السلسلة وأنّ <OutputVariable> غير متوفِّر في السياسة، سيظهر لك رمز الخطأ:

    steps.xml2json.OutputVariableIsNotAvailable
    

درجة الدقّة

إذا كان المتغيّر المحدّد في العنصر <Source> في سياسة XMLToJSON من نوع السلسلة، يكون العنصر <OutputVariable> إلزاميًا في هذه الحالة.

لتصحيح سياسة XML إلى 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. حدِّد سياسة XML إلى JSON التي حدث فيها الخطأ. يمكنك العثور على هذه السمة في العنصر faultstring ضمن استجابة الخطأ. على سبيل المثال، في faultstring التالية، يكون اسم السياسة هو XMLToJSON_CheckType:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. في سياسة XML إلى 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. تحقق من قيمة سمة type (إن كانت موجودة).
      2. إذا كانت سمة type غير موجودة، فسيتم اعتبار المتغير على أنه سلسلة.
    3. إذا كان نوع المتغيّر المحدّد في <Source> هو string، وكان نوع <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 يُستخدم في العنصر <Source> ضمن سياسة XMLToJSON:

    <Source>TrackingNumber</Source>
    

    وبالمثل، تذكَّر أنّ المتغيّر request يُستخدم في العنصر <OutputVariable> في سياسة XML إلى JSON:

    <OutputVariable>request</OutputVariable>
    

    نظرًا لأن TrackingNumber من النوع string بينما يكون المتغير response من النوع message، فهو من الأنواع غير المتوافقة، لذلك تتلقى رمز الخطأ:

    steps.xml2json.InCompatibleTypes
    

    يمكن أن يحدث الخطأ أعلاه أيضًا إذا كان المتغيّر في العنصر <Source> من النوع message، في حين أنّ المتغيّر في العنصر <OutputVariable> من نوع سلسلة.

درجة الدقّة

تأكد دائمًا من تطابق نوع المتغير المحدد في العنصر <Source> مع العنصر <OutputVariable>. من الضروري أن يتطابق نوع المتغيّرات المضمّنة في العنصر <Source> مع العنصر <OutputVariable>.

لتصحيح سياسة XML إلى JSON التي تمت مناقشتها أعلاه، يمكنك تعريف متغيّر آخر TrackingNumber_output من النوع string باستخدام "سياسة تعيين الرسالة" واستخدام هذا المتغيّر في العنصر <OutputVariable> في سياسة XML إلى JSON.

سياسة تعيين الرسائل المعدَّلة:

<?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. يمكنك تحديد نوع المصدر غير الصالح المستخدَم في سياسة XML إلى JSON. يمكنك العثور على هذه المعلومات من رسالة الخطأ. على سبيل المثال، في الخطأ التالي، يكون النوع غير الصالح هو عدد صحيح.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. افحص جميع سياسات XML إلى JSON في الخادم الوكيل لواجهة برمجة التطبيقات المحدَّد الذي حدث به الخطأ. في سياسة XML إلى 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. تحقق من قيمة سمة type (إن كانت موجودة).
      2. إذا كانت سمة type غير موجودة، فسيتم اعتبار المتغير على أنه سلسلة.
    3. إذا لم يكن نوع المتغيّر المحدّد في <Source> هو message أو string، يكون هذا هو سبب الخطأ. يمكنك الاطّلاع على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.

    كمثال، انظر إلى سياسة ExitVariables التي تُستخدَم لاستخراج القيمة من حمولة بيانات XML وضبط القيمة على المتغيّر 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 يُستخدم في العنصر <Source> في سياسة XML إلى JSON:

    <Source>BookCode</Source>
    

    بما أنّ نوع هذا المتغيّر هو Integer، فهو ليس من نوع <Source> صالحًا، سيتعذّر تنفيذ الخادم الوكيل لواجهة برمجة التطبيقات مع ظهور الخطأ:

    steps.xml2json.InvalidSourceType
    

درجة الدقّة

تأكَّد من صلاحية نوع المتغيّر المستخدَم لتحديد العنصر <Source>. نوعَا <Source> الصالحان هما message وstring.

لتجنُّب الخطأ الوارد أعلاه في سياسة XML إلى JSON، يمكنك استخدام المتغيّر request الذي يكون من النوع message أو أي سلسلة أخرى تمثِّل حمولة XML صالحة.