gpt4 book ai didi

c# - LINQ 到 XML : How to select the next element

转载 作者:可可西里 更新时间:2023-11-01 07:53:35 25 4
gpt4 key购买 nike

我有一个来自 iPhone 应用程序的 plist 文件。它看起来像下面这样:

<plist version="1.0">
<dict>
<key>barcodes</key>
<array>
<string>JF893J89FJ-66666</string>
<string>JF893J89FJ-55555</string>
</array>
<key>currentStep</key>
<integer>1</integer>
<key>dateFinished</key>
<date>2010-05-10T18:33:25Z</date>
<key>dateStarted</key>
<date>2010-05-10T18:33:25Z</date>
<key>description</key>
<string>TEST</string>
<key>geoRequired</key>
<string>N</string>
<key>inProgress</key>
<string>N</string>
<key>jobID</key>
<integer>10085</integer>
<key>jobSteps</key>
<array>
<dict>
<key>label</key>
<string>TEST</string>
<key>response</key>
<string>matt hudson</string>
<key>stepID</key>
<integer>1103</integer>
<key>typeID</key>
<integer>4</integer>
</dict>
</array>
</dict>
</plist>

我需要在 jobSteps 之后获取数组。

到目前为止我有这个:

XDocument xml = XDocument.Load(rri.Response);

var q = from elements in xml.Descendants("plist").Descendants("dict")
where elements.Value == "jobSteps"
select elements;

但我需要在其中包含 jobSteps 的元素之后获取下一项。

最佳答案

我不完全清楚 Adam 的解决方案是否是您想要的,但如果不是,您可能需要查看 NextNode属性:

Gets the next sibling node of this node.

例如,这会打印数组元素:

using System;
using System.Linq;
using System.Xml.Linq;

class Test
{
static void Main()
{
XDocument doc = XDocument.Load("test.xml");
foreach (var element in doc.Descendants("key")
.Where(x => (string) x == "jobSteps"))
{
Console.WriteLine(element.NextNode);
}
}
}

请注意,它会跳过元素之间的空格 - 但如果元素和数组之间任何文本,它就不会起作用 - 所以你会想要:

Console.WriteLine(element.NodesAfterSelf().OfType<XElement>().First());

关于c# - LINQ 到 XML : How to select the next element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5118788/

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