Khắc phục sự cố về lỗi thời gian chạy chính sách XML sang JSON

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến tài liệu về Apigee X.
thông tin

SourceUnavailable

Mã lỗi

steps.xml2json.SourceUnavailable

Nội dung phản hồi lỗi

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

Ví dụ về thông báo lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu biến thông báo hoặc biến chuỗi được chỉ định trong phần tử <Source> của chính sách XML sang JSON có một trong hai trường hợp sau:

  • nằm ngoài phạm vi (không có trong luồng cụ thể mà chính sách đang được thực thi) hoặc
  • không thể giải quyết (không xác định)

Ví dụ: lỗi này xảy ra nếu chính sách XML sang JSON được thực thi trong luồng yêu cầu, nhưng phần tử <Source> được đặt thành biến response không tồn tại trong luồng yêu cầu.

Chẩn đoán

  1. Xác định chính sách XML sang JSON nơi xảy ra lỗi và tên của biến không có sẵn. Bạn có thể tìm thấy cả hai mục này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau, tên chính sách là Convert-XMLToJSON và biến là response:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Source response is not available"
    
  2. Trong tệp XML chính sách XML sang JSON không thành công, hãy xác minh rằng tên của biến được đặt trong phần tử <Source> khớp với tên biến được xác định trong chuỗi lỗi (bước 1 ở trên). Ví dụ: chính sách chuyển đổi XML sang JSON sau đây chỉ định một biến có tên response trong phần tử <Source>, khớp với nội dung trong 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. Xác định xem biến được dùng trong phần tử <Source> đã được xác định và có sẵn trong quy trình thực thi chính sách XML sang JSON hay chưa.

  4. Nếu biến là:

    • nằm ngoài phạm vi (không có trong luồng cụ thể mà chính sách đang được thực thi) hoặc
    • không thể phân giải (chưa được xác định)

    thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: giả sử chính sách XML thành JSON hiển thị ở trên cần được thực thi trong quy trình yêu cầu. Hãy nhớ rằng biến response được dùng trong phần tử <Source> của chính sách chuyển đổi XML sang JSON. Biến phản hồi chỉ có trong luồng phản hồi.

    Vì biến phản hồi không tồn tại trong luồng yêu cầu, nên bạn sẽ nhận được mã lỗi:

    steps.xml2json.SourceUnavailable
    

Độ phân giải

Đảm bảo rằng biến được đặt trong phần tử <Source> của chính sách chuyển đổi XML sang JSON không thành công được xác định và tồn tại trong luồng mà chính sách thực thi.

Để sửa chính sách XML sang JSON mẫu ở trên, bạn có thể sửa đổi phần tử <Source> để sử dụng biến request hiện có trong luồng yêu cầu:

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

Mã lỗi

steps.xml2json.ExecutionFailed

Nội dung phản hồi lỗi

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

Các nguyên nhân có thể

Có thể có những nguyên nhân sau đây gây ra lỗi này:

Nguyên nhân Nội dung mô tả
Thiếu tải trọng đầu vào Tải trọng đầu vào (XML) đang trống.
Dữ liệu đầu vào không hợp lệ hoặc có định dạng không chính xác Dữ liệu đầu vào (XML) được chuyển tới chính sách XML cho JSON không hợp lệ hoặc sai định dạng.

Nguyên nhân: Thiếu tải trọng đầu vào

Trong chính sách XML sang JSON, nếu nội dung (tải trọng) của biến được chỉ định trong phần tử <Source> bị trống, thì lỗi này sẽ xảy ra.

Ví dụ: nếu phần tử <Source> trong chính sách chuyển đổi XML sang JSON được đặt làm biến request hoặc response và phần tử này phải chứa tải trọng XML, thì lỗi này sẽ xảy ra nếu tải trọng trống.

Chẩn đoán

  1. Xác định chính sách XML sang JSON đang xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, tên chính sách là Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 1(possibly  around char 0)"
    
  2. Kiểm tra phần tử <Source> trong tệp XML chính sách XML sang JSON không thành công và xác định biến được chỉ định. Ví dụ: chính sách XML sang JSON sau đây có phần tử <Source> được đặt để yêu cầu:

    <?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. Kiểm tra xem biến được chỉ định cho phần tử <Source> trong chính sách XMLToJSON có trống hay không. Nếu giá trị này trống, thì đó là nguyên nhân gây ra lỗi.

    Trong chính sách XML sang JSON mẫu ở trên, tải trọng yêu cầu (tức là nội dung yêu cầu) do ứng dụng gửi là trống.

    Ví dụ:

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

    Vì tải trọng yêu cầu XML trống nên bạn sẽ nhận được mã lỗi:

    steps.xml2json.ExecutionFailed
    

    Lỗi này cũng có thể xảy ra nếu phần tử <Source> được đặt thành phản hồi, nhưng máy chủ phụ trợ truyền tải trọng trống.

Độ phân giải

Đảm bảo rằng dữ liệu đầu vào được truyền đến chính sách XML sang JSON thông qua phần tử <Source> là tải trọng XML hợp lệ và không trống.

Để khắc phục vấn đề về chính sách chuyển đổi XML sang JSON mẫu, hãy truyền một tải trọng XML hợp lệ. Ví dụ:

  1. Tạo một tệp có tên city.xml với nội dung sau:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
       <City>Bengaluru</City>
       <Name>Apigee</Name>
       <Pincode>560016</Pincode>
    </root>
    
  2. Thực hiện lệnh gọi API bằng lệnh cURL như sau:

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

Nguyên nhân: Dữ liệu đầu vào không hợp lệ hoặc không đúng định dạng

Nếu chính sách chuyển đổi XML sang JSON phân tích cú pháp dữ liệu đầu vào không hợp lệ hoặc không đúng định dạng, thì bạn sẽ gặp lỗi này.

Ví dụ: nếu XML không hợp lệ sau đây được cung cấp làm dữ liệu đầu vào cho chính sách XML sang JSON,

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

bạn sẽ gặp lỗi:

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

Chẩn đoán

  1. Xác định chính sách XML sang JSON đang xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, tên chính sách là Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Execution failed. reason: Premature end of document while parsing at line 6(possibly  around char 0)"
    
  2. Kiểm tra phần tử <Source> được chỉ định trong tệp XML không tuân thủ chính sách chuyển đổi XML sang JSON. Ví dụ: chính sách XML sang JSON sau đây có phần tử <Source> được đặt thành biến 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. Xác thực xem dữ liệu đầu vào được chỉ định trong phần tử <Source> cho chính sách XML sang JSON có phải là tải trọng XML hợp lệ hay không. Nếu dữ liệu đầu vào không hợp lệ hoặc sai định dạng, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ về chính sách XML sang JSON nêu trên, XML không hợp lệ sau đây đã được chuyển đến chính sách Trích xuất các biến thông qua tệp city.xml:

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

    Dưới đây là lệnh gọi API mẫu cho thấy cách yêu cầu được truyền:

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

    Tải trọng XML được truyền đến API là không hợp lệ vì XML không có thẻ đóng cho phần tử <root>. Vì vậy, bạn sẽ nhận được mã lỗi:

    steps.xml2json.ExecutionFailed
    

    Lỗi này cũng có thể xảy ra nếu phần tử <Source> được đặt thành phản hồi nhưng tải trọng phản hồi XML từ máy chủ phụ trợ không hợp lệ hoặc không đúng định dạng.

Độ phân giải

Đảm bảo rằng dữ liệu đầu vào được chuyển đến chính sách XML sang JSON thông qua phần tử <Source> là hợp lệ và không bị sai định dạng.

Để khắc phục vấn đề với chính sách XML mẫu sang JSON đã thảo luận ở trên, hãy chuyển một yêu cầu tải trọng XML hợp lệ như sau:

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

OutputVariableIsNotAvailable

Mã lỗi

steps.xml2json.OutputVariableIsNotAvailable

Nội dung phản hồi lỗi

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

Ví dụ về thông báo lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu biến được chỉ định trong phần tử <Source> của chính sách chuyển đổi XML sang JSON thuộc loại chuỗi và phần tử <OutputVariable> không được xác định. Phần tử <OutputVariable> là bắt buộc khi biến được xác định trong phần tử <Source> thuộc loại string.

Chẩn đoán

  1. Xác định Chính sách chuyển đổi XML sang JSON mà lỗi đã xảy ra. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, tên chính sách là Convert-XMLToJSON:

    "faultstring": "XMLToJSON[Convert-XMLToJSON]: Output variable is not available."
    
  2. Trong Chính sách chuyển đổi XML sang JSON không thành công, hãy xác thực xem <OutputVariable> có bị thiếu hay không.

    Dưới đây là Chính sách XML sang JSON mẫu bị thiếu phần tử <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. Xác định loại biến được chỉ định trong phần tử <Source>:

    1. Tìm mã trong gói Proxy API, nơi biến được xác định trước tiên.
    2. Sau khi tìm ra chính sách trong đó biến được xác định và điền sẵn trước tiên, bạn cần xác định loại biến đó như sau:
      1. Kiểm tra giá trị của thuộc tính type (nếu có).
      2. Nếu không có thuộc tính type, thì biến được coi là một chuỗi.
    3. Nếu loại của biến là string, thì đó là nguyên nhân gây ra lỗi. Bạn có thể tìm hiểu về các biến phổ biến và loại biến trong phần Tài liệu tham khảo về biến.

    Ví dụ: hãy xem biến TrackingNumber trong chính sách chuyển đổi XML sang JSON ở trên. Biến này thuộc kiểu chuỗi. Bây giờ, hãy xem xét chính sách Chỉ định thông báo dùng để đặt giá trị cho một biến có tên là TrackingNumber như minh hoạ dưới đây:

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

    Xin lưu ý rằng loại biến được đặt thông qua <AssignVariable> là chuỗi. Vì vậy, biến TrackingNumber thuộc loại chuỗi.

    Bây giờ, hãy nhớ rằng biến TrackingNumber được sử dụng trong phần tử <Source> của chính sách XML sang JSON:

    <Source>TrackingNumber</Source>
    

    TrackingNumber thuộc loại chuỗi và <OutputVariable> bị thiếu trong chính sách, nên bạn sẽ nhận được mã lỗi:

    steps.xml2json.OutputVariableIsNotAvailable
    

Độ phân giải

Hãy đảm bảo rằng nếu biến được chỉ định trong phần tử <Source> của Chính sách XMLToJSON là loại chuỗi, thì phần tử <OutputVariable> là bắt buộc trong trường hợp này.

Để sửa Chính sách chuyển đổi XML sang JSON đã thảo luận ở trên, hãy thêm phần tử <OutputVariable> như minh hoạ dưới đây.

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

Mã lỗi

steps.xml2json.InCompatibleTypes

Nội dung phản hồi lỗi

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

Ví dụ về thông báo lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu loại biến được xác định trong phần tử <Source> và phần tử <OutputVariable> không giống nhau. Bạn bắt buộc phải so khớp loại biến trong phần tử <Source> và phần tử <OutputVariable>.

The valid types are message and string.

Chẩn đoán

  1. Xác định Chính sách XML sang JSON đang xảy ra lỗi. Bạn có thể tìm thấy thông tin này trong phần tử faultstring của phản hồi lỗi. Ví dụ: trong faultstring sau đây, tên chính sách là XMLToJSON_CheckType:

    "faultstring": "XMLToJSON[XMLToJSON_CheckType]: String can not be assigned to message type."
    
  2. Trong Chính sách chuyển đổi XML sang JSON không thành công, hãy lưu ý các giá trị được chỉ định trong <OutputVariable>.

    Sau đây là chính sách XMLToJSON mẫu bị thiếu phần tử <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. Xác định loại biến được chỉ định trong phần tử <Source><OutputVariable>:

    1. Tìm mã trong gói Proxy API, trong đó mỗi biến này được xác định trước.
    2. Sau khi tìm ra chính sách trong đó biến được xác định và điền sẵn trước tiên, bạn cần xác định loại biến đó như sau:
      1. Kiểm tra giá trị của thuộc tính type (nếu có).
      2. Nếu không có thuộc tính type, thì biến được coi là một chuỗi.
    3. Nếu loại biến được chỉ định trong <Source>string trong khi loại <OutputVariable> là thông báo hoặc ngược lại, thì đó là nguyên nhân gây ra lỗi. Bạn có thể tìm hiểu về các biến phổ biến và loại biến trong phần Tài liệu tham khảo về biến.

    Ví dụ: hãy xem xét chính sách Chỉ định thông báo dùng để đặt giá trị cho biến TrackingNumber như minh hoạ dưới đây:

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

    Lưu ý rằng loại biến được đặt qua <AssignVariable> là chuỗi. Vì vậy, biến TrackingNumber thuộc kiểu chuỗi.

    Bây giờ, hãy nhớ lại rằng biến TrackingNumber được dùng trong phần tử <Source> của chính sách XMLToJSON:

    <Source>TrackingNumber</Source>
    

    Tương tự, hãy nhớ rằng biến request được sử dụng trong phần tử <OutputVariable> của chính sách XML sang JSON:

    <OutputVariable>request</OutputVariable>
    

    TrackingNumber thuộc loại string trong khi biến response thuộc loại message, nên chúng là loại không tương thích, vì vậy, bạn sẽ nhận được mã lỗi:

    steps.xml2json.InCompatibleTypes
    

    Lỗi trên cũng có thể xảy ra nếu biến trong phần tử <Source> thuộc loại message nhưng biến trong phần tử <OutputVariable> thuộc loại chuỗi.

Độ phân giải

Đảm bảo rằng loại biến được xác định trong phần tử <Source> và phần tử <OutputVariable> luôn giống nhau. Kiểu của các biến có trong phần tử <Source> và phần tử <OutputVariable> bắt buộc phải khớp nhau.

Để sửa Chính sách XML sang JSON được thảo luận ở trên, bạn có thể khai báo một biến khác TrackingNumber_output thuộc loại string bằng cách sử dụng Chỉ định chính sách thông báo và sử dụng biến này trong phần tử <OutputVariable> của chính sách XML sang JSON.

Sửa đổi chính sách về việc chỉ định tin nhắn:

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

Chính sách XMLToJSON đã sửa đổi:

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

Mã lỗi

steps.xml2json.InvalidSourceType

Nội dung phản hồi lỗi

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

Ví dụ về thông báo lỗi

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

Nguyên nhân

Lỗi này xảy ra nếu loại biến dùng để xác định phần tử <Source> không hợp lệ.Các loại biến hợp lệ là messagestring.

Chẩn đoán

  1. Xác định loại nguồn không hợp lệ được sử dụng trong chính sách chuyển đổi XML sang JSON. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, kiểu không hợp lệ là số nguyên.

    "faultstring": "XMLToJSON[class java.lang.Integer]: Invalid source type class java.lang.Integer. Valid source types are [message, string]."
    
  2. Kiểm tra tất cả chính sách chuyển đổi XML sang JSON trong Proxy API cụ thể nơi xảy ra lỗi. Trong Chính sách chuyển đổi XML sang JSON không thành công, hãy lưu ý tên của biến được chỉ định trong <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. Xác định loại biến được chỉ định trong phần tử <Source>:

    1. Tìm mã trong gói Proxy API, nơi biến này được xác định trước tiên.
    2. Sau khi tìm ra chính sách trong đó biến được xác định và điền sẵn trước tiên, bạn cần xác định loại biến đó như sau:
      1. Kiểm tra giá trị của thuộc tính type (nếu có).
      2. Nếu không có thuộc tính type, thì biến được coi là một chuỗi.
    3. Nếu loại biến được chỉ định trong <Source> không phải là loại message hay string, thì đó là nguyên nhân gây ra lỗi. Bạn có thể tìm hiểu về các biến phổ biến và loại biến trong phần Tài liệu tham khảo về biến.

    Ví dụ: hãy xem xét chính sách ExtractVariables dùng để trích xuất giá trị từ tải trọng XML và đặt giá trị cho biến BookCode thành loại integer như minh hoạ dưới đây:

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

    Bây giờ, hãy nhớ rằng biến BookCode được sử dụng trong phần tử <Source> của chính sách XML sang JSON:

    <Source>BookCode</Source>
    

    Vì loại của biến này là Integer, không phải là loại <Source> hợp lệ nên Proxy API sẽ gặp lỗi:

    steps.xml2json.InvalidSourceType
    

Độ phân giải

Đảm bảo rằng loại biến dùng để chỉ định phần tử <Source> là hợp lệ. Các loại <Source> hợp lệ là messagestring.

Để tránh lỗi nêu trên liên quan đến chính sách XML sang JSON, bạn có thể sử dụng biến request thuộc loại message hoặc bất kỳ chuỗi nào khác là tải trọng XML hợp lệ.