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

الدقة

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

    على سبيل المثال، اطّلِع على متغيّر TrackingNumber في سياسة XML إلى JSON أعلاه. وهو من النوع string. والآن، ضع في الاعتبار سياسة "تعيين الرسالة" التي تُستخدَم لضبط قيمة لمتغيّر يسمى 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 To 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> هو message أو العكس، هذا هو سبب الخطأ. يمكنك التعرّف على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.

    على سبيل المثال، يمكنك اتّباع سياسة "تعيين رسالة" تُستخدَم لضبط قيمة لمتغيّر يسمى 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، هذا هو سبب الخطأ. يمكنك الاطّلاع على المتغيّرات الشائعة وأنواعها في مرجع المتغيّرات.

    على سبيل المثال، نأخذ سياسة ExtractVariables التي تُستخدَم لاستخراج القيمة من الحمولة البرمجية بتنسيق 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 To JSON، يمكنك استخدام المتغيّر request من النوع message أو أي سلسلة أخرى تمثّل حمولة XML صالحة.