代码之家  ›  专栏  ›  技术社区  ›  Bhavna

使用强soap节点模块,它不会向元素的属性添加名称空间

  •  0
  • Bhavna  · 技术社区  · 7 年前

    使用强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 (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 回复  |  直到 7 年前
        1
  •  0
  •   Bhavna    6 年前

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

    推荐文章