XPath - выберите значение - PullRequest
0 голосов
/ 23 апреля 2020

Добрый день. Я бы хотел получить ЗНАЧЕНИЕ national_id. Я борюсь, так как значение находится в отдельном элементе, и я не уверен, как его выбрать ТОЛЬКО.

Я хотел бы, чтобы "1234567891011 (ZAF-ID)" был возвращен.

<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
   <env:Body>
      <wd:Get_Workers_Response wd:version="v32.2" xmlns:wd="urn:com.workday/bsvc">
         <wd:Response_Data>
            <wd:Worker>
              <wd:Worker_Data>
              <wd:Integration_Field_Override_Data>
                     <wd:Field_Reference>
                        <wd:ID wd:type="WID">12345</wd:ID>
                        <wd:ID wd:type="Integration_Document_Field_Name" wd:parent_type="Integration_Document_Name" wd:parent_id="INT017 Field Override for Worker">passport_number</wd:ID>
                     </wd:Field_Reference>
                  </wd:Integration_Field_Override_Data>
                  <wd:Integration_Field_Override_Data>
                     <wd:Field_Reference>
                        <wd:ID wd:type="WID">67891</wd:ID>                      
                        <wd:ID wd:type="Integration_Document_Field_Name" wd:parent_type="Integration_Document_Name" wd:parent_id="INT017 Field Override for Worker">national_id</wd:ID>
                     </wd:Field_Reference>
                     <wd:Value>1234567891011 (ZAF-ID)</wd:Value>
                  </wd:Integration_Field_Override_Data>
                  <wd:Integration_Field_Override_Data>
                     <wd:Field_Reference>
                        <wd:ID wd:type="WID">111213</wd:ID>
                        <wd:ID wd:type="Integration_Document_Field_Name" wd:parent_type="Integration_Document_Name" wd:parent_id="INT017 Field Override for Worker">network_logon</wd:ID>
                     </wd:Field_Reference>
                  </wd:Integration_Field_Override_Data>
                  <wd:Integration_Field_Override_Data>
                     <wd:Field_Reference>
                        <wd:ID wd:type="WID">141516</wd:ID>
                        <wd:ID wd:type="Integration_Document_Field_Name" wd:parent_type="Integration_Document_Name" wd:parent_id="INT017 Field Override for Worker">role_size</wd:ID>
                     </wd:Field_Reference>
                     <wd:Value>M</wd:Value>
                  </wd:Integration_Field_Override_Data>
                  <wd:Integration_Field_Override_Data>
                     <wd:Field_Reference>
                        <wd:ID wd:type="WID">171819</wd:ID>
                        <wd:ID wd:type="Integration_Document_Field_Name" wd:parent_type="Integration_Document_Name" wd:parent_id="INT017 Field Override for Worker">ts_organization</wd:ID>
                     </wd:Field_Reference>
                     <wd:Value>Information Technology</wd:Value>
                  </wd:Integration_Field_Override_Data>
                  <wd:Integration_Field_Override_Data>
                     <wd:Field_Reference>
                        <wd:ID wd:type="WID">202122</wd:ID>
                        <wd:ID wd:type="Integration_Document_Field_Name" wd:parent_type="Integration_Document_Name" wd:parent_id="INT017 Field Override for Worker">mutual_branch_user</wd:ID>
                     </wd:Field_Reference>
                     <wd:Value>N</wd:Value>
                  </wd:Integration_Field_Override_Data>
                  </wd:Worker_Data>
            </wd:Worker>
         </wd:Response_Data>
      </wd:Get_Workers_Response>
   </env:Body>
</env:Envelope>

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

0 голосов
/ 23 апреля 2020

Чтобы завершить ответ Александра Риделя, есть еще два варианта:

//wd:Value[preceding::wd:ID[1][.="national_id"]]/text()

//wd:ID[.="national_id"]/../following-sibling::wd:Value/text()
0 голосов
/ 23 апреля 2020

это работает

//wd:ID[text()="national_id"]/ancestor::*/wd:Value/text()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...