פתרון בעיות בפריסת מדיניות XML ל-JSON

אתם צופים במסמכי העזרה של Apigee Edge.
כניסה למסמכי העזרה של Apigee X.
info

EitherOptionOrFormat

הודעת שגיאה

כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

Error Saving Revision [revision_number]
XMLToJSON[{0}]: Either Options or Format must be specified.

שגיאה לדוגמה

Error Saving Revision 1
XMLToJSON[{0}]: Either Options or Format must be specified.

דוגמה לצילום מסך

סיבה

אם אחד מהרכיבים <Options> או <Format> לא מוגדר במדיניות ההמרה מ-XML ל-JSON, הפריסה של שרת ה-proxy של ה-API נכשלת.

צריך להשתמש ב-<Options> אם לא משתמשים ב-<Format>.

משתמשים ברכיב <Format> או בקבוצת הרכיבים <Options>. אי אפשר להשתמש גם ב-<Format> וגם ב-<Options>. פורמטים מוגדרים מראש כוללים: xml.com, yahoo, google ו-badgerFish.

אבחון

  1. בודקים את כל כללי המדיניות להמרת XML ל-JSON בשרת ה-API הספציפי שבו אירעה התקלה. אם יש מדיניות של XML ל-JSON שבה לא הוצהר על אחד מהרכיבים <Options> או <Format>, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה לא הוצהר על אף אחד מהאלמנטים:

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

רזולוציה

מוודאים שב-XML של המדיניות להמרת XML ל-JSON מופיע אחד מהרכיבים <Options> או <Format> שמוצהרים במדיניות.

דוגמה 1:

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

דוגמה 2:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<XMLToJSON async="false" continueOnError="false" enabled="true" name="XMLToJSON">
    <DisplayName>XMLToJSON</DisplayName>
    <Properties/>
    <Options>
        <RecognizeNumber>true</RecognizeNumber>
        <RecognizeBoolean>true</RecognizeBoolean>
        <RecognizeNull>true</RecognizeNull>
    </Options>
    <OutputVariable>response</OutputVariable>
    <Source>response</Source>
</XMLToJSON>

UnknownFormat

הודעת שגיאה

כשפורסים את שרת ה-proxy ל-API דרך ממשק המשתמש של Edge או Edge management API, מופיעה הודעת השגיאה הבאה:

Error Saving Revision [revision_number]
XMLToJSON[policy_name]: Unknown Format [unknown_format].

שגיאה לדוגמה

Error Saving Revision 1
XMLToJSON[WithFormat]: Unknown Format google.com.

דוגמה לצילום מסך

סיבה

אם פורמט לא ידוע מוגדר לאלמנט <Format> במדיניות ההמרה מ-XML ל-JSON, הפריסה של שרת ה-proxy של ה-API נכשלת.

פורמטים מוגדרים מראש כוללים: xml.com, yahoo, google ו-badgerFish.

אבחון

  1. צריך לזהות את מדיניות ה-XML ל-JSON שבה אירעה השגיאה ואת הפורמט הלא ידוע. אפשר למצוא את המידע הזה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא WithFormat והפורמט הלא ידוע הוא google.com:

    Error Saving Revision 1
    XMLToJSON[WithFormat]: Unknown Format google.com.
    
  2. מוודאים שהפורמט הלא ידוע שצוין במדיניות להמרת XML ל-JSON שנכשלה תואם לערך שצוין בהודעת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה מציינת את הפורמט google.com, התואם את הפורמט שמופיע בהודעת השגיאה:

    <XMLToJSON async="false" continueOnError="false" enabled="true" name="WithFormat">
      <DisplayName>WithFormat</DisplayName>
      <Properties/>
      <Format>google.com</Format>
      <OutputVariable>response</OutputVariable>
      <Source>response</Source>
    </XMLToJSON>
    
  3. אם הפורמט שצוין הוא לא אחד מהפורמטים המוגדרים מראש xml.com,‏ yahoo,‏ google או badgerFish, זו הסיבה לשגיאה.

    במדיניות לדוגמה של XML ל-JSON שמוצגת למעלה, הפורמט הוא google.com שהוא לא תקין. לכן, הפריסה של שרת ה-proxy ל-API נכשלת עם השגיאה:

    XMLToJSON[WithFormat]: Unknown Format google.com.
    

רזולוציה

מוודאים שהפורמט שצוין ברכיב <Format> של המדיניות להמרת XML ל-JSON הוא תקין. לדוגמה:

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