【发布时间】:2009-10-28 10:24:47
【问题描述】:
我是 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>
目前,通过上述查询,我得到了所有名称成员,但这不是我想要的,就像我在下面的 cmets 中所说的那样!
更新--- 我试图通过此查询获取所有具有频道成员的名称成员
var parts = from c in xdoc.XPathSelectElements("//member[name='name']")
where c.Element("name").Value == "channels" && c.Element("name").HasElements
select c;
但只能得到一个空的结果!
【问题讨论】:
-
XML sn-p 似乎无效。第一个值和结构节点在哪里关闭?而且顶级成员节点也没有关闭?您能否插入一个使您的结构清晰的 sn-p(因为这似乎是一个问题)。最好作为文本插入,这样我们就可以复制粘贴了。
-
刚刚编辑了一次,希望现在清楚我想要什么:)