gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:22 26 4
gpt4 key购买 nike

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

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

private void handleMonitorResponse(XElement receivedSessions)
{
List<XElement> childList = receivedSessions.Elements().ToList();
childList.ForEach(handleEachSession);

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

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

private void handleEachSession(XElement session)
{
XElement receivedSessionId = session.XPathSelectElement("//sessionId");
XElement receivedQuality = session.XPathSelectElement("//quality");
XElement receivedContentStatus = session.XPathSelectElement("//contentStatus");

谁能帮帮我?

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>
<contentStatus type="string">paused</contentStatus>
</item>

session = (second call)
<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>

最佳答案

根据xpath-syntax ,双斜杠 (//) 表示:从当前节点中选择文档中与选择匹配的节点,无论它们位于何处。所以考虑到这一点,您可能必须将 handleEachSession 函数更改为

private void handleEachSession(XElement session)
{
XElement receivedSessionId = session.XPathSelectElement("sessionId");
XElement receivedQuality = session.XPathSelectElement("quality");
XElement receivedContentStatus = session.XPathSelectElement("contentStatus");
}

关于C# - Linq - XPathSelectElement 每次都返回相同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10699654/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com