Я новичок в Xpath и получил проблему. Я хочу, чтобы все узлы под конкретным родительским узлом!
Я попробовал это с этим запросом, но получил только пустой результат! (
var ISDN_confs = from x in xdoc.XPathSelectedElements("//member[name='participantOne']//member[name='name']")
select x;
Пример XML:
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>calls</name>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>uniqueId</name>
<value>
<int>6</int>
</value>
</member>
<member>
<name>participantOne</name>
<value>
<struct>
<member>
<name>uniqueId</name>
<value>
<int>1609</int>
</value>
</member>
<member>
<name>protocol</name>
<value>
<string>h323</string>
</value>
</member>
<member>
<name>incoming</name>
<value>
<boolean>1</boolean>
</value>
</member>
<member>
<name>progress</name>
<value>
<string>connected</string>
</value>
</member>
<member>
<name>fecc</name>
<value>
<boolean>1</boolean>
</value>
</member>
<member>
<name>videoCodec</name>
<value>
<string>h264</string>
</value>
</member>
<member>
<name>audioCodec</name>
<value>
<string>g722</string>
</value>
</member>
<member>
<name>autoAttendant</name>
<value>
<boolean>0</boolean>
</value>
</member>
<member>
<name>name</name>
<value>
<string>Test Endpoints</string>
</value>
</member>
<member>
<name>number</name>
<value>
<string>12345</string>
</value>
</member>
<member>
<name>ipAddress</name>
<value>
<string>192.168.2.155</string>
</value>
</member>
<member>
<name>callIdentifier</name>
<value>
<base64>CCCCVVVVVDDDDD</base64>
</value>
</member>
</struct>
</value>
</member>
<member>
<name>participantTwo</name>
<value>
<struct>
<member>
<name>name</name>
<value>
<string/>
</value>
</member>
<member>
<name>number</name>
<value>
<string>123456</string>
</value>
</member>
<member>
<name>channels</name>
<value>
<array>
<data>
<value>
<int>1</int>
</value>
<value>
<int>2</int>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</member>
</struct>
</value>
Желаемый результат должен быть ограниченным изменением фактического выхода. Поэтому я не хочу всех имен-членов, но имен-членов в двух структурах без каналов-членов.
Я надеюсь, ясно, что я хочу! :)
Пример вывода:
<member>
<name>name</name>
<value>
<string>Test Endpoints</string>
</value>
</member>
В данный момент, с помощью вышеуказанного запроса, я получаю всех имен-членов, но это не то, что я хочу, как я сказал в комментариях ниже!
UPDATE ---
Я попытался получить все имена-члены, у которых есть каналы-участники с этим запросом
var parts = from c in xdoc.XPathSelectElements("//member[name='name']")
where c.Element("name").Value == "channels" && c.Element("name").HasElements
select c;
но получите только пустой результат!