使用 Strong-soap 节点模块,它没有为元素的属性添加命名空间

Using Strong-soap node module, It is not adding namespace to the attributes of the elements

使用 Strong-soap 节点模块,它没有向元素的属性添加命名空间,因此我收到错误 - 无效属性。

<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 (6160)</faultstring>
     <detail>
        <wd:Validation_Fault>
           <wd:Validation_Error>
              <wd:Message>Invalid Attribute Descriptor- for element Person_Name_Detail_Data (6160)</wd:Message>
              <wd:Detail_Message>Invalid Attribute Descriptor- for element Person_Name_Detail_Data (6160)</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>

关于如何解决此问题的任何指示?

我在节点模块存储库下提出了一个问题,现在已由存储库所有者修复。请参阅问题 - https://github.com/strongloop/strong-soap/issues/134 了解有关修复的更多详细信息。