小编Til*_*ach的帖子

C# - Linq - XPathSelectElement每次返回相同的结果

我在读取一些xml-lines时遇到了XPathSelectElement的问题....

函数handleEachSession从我的其他函数的mathod childList.ForEach()调用两次:

private void handleMonitorResponse(XElement receivedSessions)
 {
 List<XElement> childList = receivedSessions.Elements().ToList();
 childList.ForEach(handleEachSession);
Run Code Online (Sandbox Code Playgroud)

childList有两个元素(两行XML,我希望它有的那些)然后我可以在调试器中看到handleEachSession()的两个调用都获得了正确的XElement会话.那两个我希望它有.

现在有这些XPathSelectElement.它适用于第一次通话但不适用于第二次通话.第二次我得到新的XElement会话,但XPathSelectElement仍然返回第一次调用的旧值.哼!??我无法理解这种行为.

private void handleEachSession(XElement session)
 {
 XElement receivedSessionId = session.XPathSelectElement("//sessionId");
 XElement receivedQuality = session.XPathSelectElement("//quality");
 XElement receivedContentStatus = session.XPathSelectElement("//contentStatus");
…
Run Code Online (Sandbox Code Playgroud)

谁能帮帮我吗?

XML是:

receivedSessions = 
<sessions type="array">
  <item type="object">
    <sessionId type="string">8c86716a87</sessionId>
    <quality type="string">mid</quality>
    <addressUri type="string">http://192.168.6.234/media/SorrowPinkFloyd_.mp4</addressUri>
    <currentTime type="number">1.5542887</currentTime>
    <contentStatus type="string">paused</contentStatus>
  </item>
  <item type="object">
    <sessionId type="string">c795067c4e</sessionId>
    <quality type="string">mid</quality>
    <addressUri type="string">http://192.168.6.234/media/trailer.mp4</addressUri>
    <currentTime type="number">3.3492105</currentTime>
    <contentStatus type="string">playing</contentStatus>
  </item>
</sessions>

session = (first call)
<item type="object">
  <sessionId type="string">8c86716a87</sessionId>
  <quality type="string">mid</quality>
  <addressUri type="string">http://192.168.6.234/media/SorrowPinkFloyd_.mp4</addressUri>
  <currentTime type="number">1.5542887</currentTime> …
Run Code Online (Sandbox Code Playgroud)

c# linq

1
推荐指数
1
解决办法
1084
查看次数

标签 统计

c# ×1

linq ×1