Используя модуль узла Strong-soap, он не добавляет пространство имен к атрибутам элементов

Используя модуль узла Strong-soap, он не добавляет пространство имен к атрибутам элементов и из-за этого я получаю ошибку -Invalid Attribute.

<ns1:Put_Applicant_Request xmlns:ns1="urn:com.workday/bsvc" version="v23.0">
  <ns1:Applicant_Data>
    <ns1:Personal_Data>
      <ns1:Name_Data>
        <ns1:Legal_Name_Data>
          <ns1:Name_Detail_Data>
            <ns1:Country_Reference Descriptor="?">
              <ns1:ID ns1:type="ISO_3166-1_Alpha-3_Code">USA</ns1:ID>
            </ns1:Country_Reference>
            <ns1:First_Name>Lionel</ns1:First_Name>
            <ns1:Last_Name>Messi</ns1:Last_Name>
          </ns1:Name_Detail_Data>
        </ns1:Legal_Name_Data>
      </ns1:Name_Data>
      <ns1:Contact_Data>
        <ns1:Email_Address_Data>
          <ns1:Email_Address>lmessi@email.net</ns1:Email_Address>
          <ns1:Usage_Data ns1:Public="false">
            <ns1:Type_Data ns1:Primary="true">
              <ns1:Type_Reference ns1:Descriptor="?">
                <ns1:ID ns1:type="Communication_Usage_Type_ID">HOME</ns1:ID>
              </ns1:Type_Reference>
            </ns1:Type_Data>
          </ns1:Usage_Data>
        </ns1:Email_Address_Data>
      </ns1:Contact_Data>
    </ns1:Personal_Data>
    <ns1:Recruiting_Data>
      <ns1:Positions_Considered_for_Reference ns1:Descriptor="?">
        <ns1:ID ns1:type="Position_ID">P-00054</ns1:ID>
      </ns1:Positions_Considered_for_Reference>
    </ns1:Recruiting_Data>
  </ns1:Applicant_Data>
</ns1:Put_Applicant_Request>

Теперь, используя утилиту xml2json, я перенес это в JSON, как показано ниже:

  Body:   { Put_Applicant_Request:
  { '$attributes': { version: 'v23.0' },
    Applicant_Data:
     { Personal_Data:
        { Name_Data:
           { Legal_Name_Data:
              { Name_Detail_Data:
                 { Country_Reference:
                    { '$attributes': { "xmlns": "urn:com.workday/bsvc",Descriptor: '?' },
                      ID:
                       { '$attributes': { type: 'ISO_3166-1_Alpha-3_Code' },
                         '$value': 'USA' } },
                   First_Name: 'Lionel',
                   Last_Name: 'Messi' } } },
          Contact_Data:
           { Email_Address_Data:
              { Email_Address: 'lmessi@email.net',
                Usage_Data:
                 { '$attributes': { Public: 'false' },
                   Type_Data:
                    { '$attributes': { Primary: 'true' },
                      Type_Reference:
                       { '$attributes': { Descriptor: '?' },
                         ID:
                          { '$attributes': { type: 'Communication_Usage_Type_ID' },
                            '$value': 'HOME' } } } } } } },
       Recruiting_Data:
        { Positions_Considered_for_Reference:
           { '$attributes': { Descriptor: '?' },
             ID: { '$attributes': { type: 'Position_ID' }, '$value': 'P-00054' } } } } } } }

Передавая эти входные данные в модуль узла, сгенерированная полезная нагрузка является такой, как показано ниже, которая не имеет пространства имен для тега атрибута и, следовательно, получает ошибку:

  <soap:Body>
<ns1:Put_Applicant_Request xmlns:ns1="urn:com.workday/bsvc" version="v23.0">
  <ns1:Applicant_Data>
    <ns1:Personal_Data>
      <ns1:Name_Data>
        <ns1:Legal_Name_Data>
          <ns1:Name_Detail_Data>
            <ns1:Country_Reference xmlns="urn:com.workday/bsvc11" Descriptor="?">
              <ns1:ID type="ISO_3166-1_Alpha-3_Code">USA</ns1:ID>
            </ns1:Country_Reference>
            <ns1:First_Name>Lionel</ns1:First_Name>
            <ns1:Last_Name>Messi</ns1:Last_Name>
          </ns1:Name_Detail_Data>
        </ns1:Legal_Name_Data>
      </ns1:Name_Data>
      <ns1:Contact_Data>
        <ns1:Email_Address_Data>
          <ns1:Email_Address>lmessi@email.net</ns1:Email_Address>
          <ns1:Usage_Data Public="false">
            <ns1:Type_Data Primary="true">
              <ns1:Type_Reference Descriptor="?">
                <ns1:ID type="Communication_Usage_Type_ID">HOME</ns1:ID>
              </ns1:Type_Reference>
            </ns1:Type_Data>
          </ns1:Usage_Data>
        </ns1:Email_Address_Data>
      </ns1:Contact_Data>
    </ns1:Personal_Data>
    <ns1:Recruiting_Data>
      <ns1:Positions_Considered_for_Reference Descriptor="?">
        <ns1:ID type="Position_ID">P-00054</ns1:ID>
      </ns1:Positions_Considered_for_Reference>
    </ns1:Recruiting_Data>
  </ns1:Applicant_Data>
</ns1:Put_Applicant_Request>

Я получаю ниже ошибки:

     <SOAP-ENV:Fault xmlns:wd="urn:com.workday/bsvc">
     <faultcode>SOAP-ENV:Client.validationError</faultcode>
     <faultstring>Validation error occurred. Invalid Attribute Descriptor- for element Person_Name_Detail_Data (6$17160)</faultstring>
     <detail>
        <wd:Validation_Fault>
           <wd:Validation_Error>
              <wd:Message>Invalid Attribute Descriptor- for element Person_Name_Detail_Data (6$17160)</wd:Message>
              <wd:Detail_Message>Invalid Attribute Descriptor- for element Person_Name_Detail_Data (6$17160)</wd:Detail_Message>
              <wd:Xpath>/ns1:Put_Applicant_Request[1]/ns1:Applicant_Data[1]/ns1:Personal_Data[1]/ns1:Name_Data[1]/ns1:Legal_Name_Data[1]/ns1:Name_Detail_Data[1]/ns1:Country_Reference[1]/@Descriptor</wd:Xpath>
           </wd:Validation_Error>
        </wd:Validation_Fault>
     </detail>
  </SOAP-ENV:Fault>

Любые указатели о том, как я мог бы решить эту проблему?

1 ответ

Решение

Я поднял проблему в хранилище модуля узла, и теперь это исправлено владельцами хранилища. Обратитесь к проблеме - https://github.com/strongloop/strong-soap/issues/134 для получения дополнительной информации об исправлении.

Другие вопросы по тегам