Сравнение 2 атрибутов с общим идентификатором из 2 разных узлов и возвращение других атрибутов - PullRequest
0 голосов
/ 24 сентября 2019

есть ли способ поиска идентификатора, совместно используемого двумя узлами с различным именем атрибута, и ответного ответа на третий атрибут.

в приведенном ниже XML-коде я хотел бы иметь следующую логику: для поиска //schedules/tttr/@12345для значения в атрибуте p (в данном случае 1569735) Найдите значение атрибута p (1569735) во всех атрибутах programs/p/@id.если совпадение, принесите //programs/p/@t (в этом случае «Prime Discussion»)

<?xml version="1.0" encoding="UTF-8"?>
<root>
    <schedules>
        <tttr 12345 
        <s s="2019-09-18T00:00:00" d="1800" p="1569735" c="100007">
            <f id="3" />
        </s>
    </schedules>
    <programs>
        <p id="1569735" t="Prime Discussion" d="Discussion on Current Affairs." rd="Discussion on Current Affairs." l="en">
            <f id="2" />
            <f id="21" />
            <k id="6" v="20160614" />
            <k id="1" v="2450548" />
            <k id="18" v="12983658" />
            <k id="21" v="12983658" />
            <k id="10" v="Program" />
            <k id="19" v="SH024505480000" />
            <k id="20" v="http://tmsimg.com/assets/p12983658_b_h5_aa.jpg" />
            <c id="607" />
        </p>
    </programs>
</root>

1 Ответ

0 голосов
/ 24 сентября 2019

Один из способов найти значение Prime Discussion заключается в следующем:

/root/programs/p[@id = /root/schedules/tttr/s/@p]/@t

Если вы хотите искать элементы в глобальном масштабе, вы также можете использовать

//programs/p[@id = //schedules/tttr/s/@p]/@t

Результат:

Prime Discussion

PS: В приведенных выше строках предполагается, что XML правильно сформирован и выглядит так (12345 был удалени добавлен закрывающий тег):

...
<schedules>
    <tttr>
      <s s="2019-09-18T00:00:00" d="1800" p="1569735" c="100007">
        <f id="3" />
      </s>
    </tttr>
</schedules>
....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...