C# 从数字XDocument中选择位于的元素
我得到了一个如下所示的XMLC# 从数字XDocument中选择位于的元素,c#,xml,windows-phone-7,linq-to-xml,C#,Xml,Windows Phone 7,Linq To Xml,我得到了一个如下所示的XML <TripList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlopen.rejseplanen.dk/xml/rest/hafasRestTrip.xsd"> <Trip> <Leg name="til fods" type="WALK">...</Leg>
<TripList xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://xmlopen.rejseplanen.dk/xml/rest/hafasRestTrip.xsd">
<Trip>
<Leg name="til fods" type="WALK">...</Leg>
<Leg name="Bus 61" type="BUS">...</Leg>
<Leg name="til fods" type="WALK">...</Leg>
<Leg name="Bus 52" type="BUS">...</Leg>
<Leg name="til fods" type="WALK">...</Leg>
</Trip>
<Trip>
<Leg name="til fods" type="WALK">...</Leg>
<Leg name="Bus 61" type="BUS">...</Leg>
<Leg name="til fods" type="WALK">...</Leg>
<Leg name="Bus 52" type="BUS">...</Leg>
<Leg name="til fods" type="WALK">...</Leg>
</Trip>
<Trip>
<Leg name="til fods" type="WALK">...</Leg>
<Leg name="Bus 191" type="BUS">...</Leg>
<Leg name="til fods" type="WALK">...</Leg>
<Leg name="Bus 152" type="BUS">...</Leg>
<Leg name="til fods" type="WALK">...</Leg>
</Trip>
<Trip>
<Leg name="til fods" type="WALK">...</Leg>
<Leg name="Bus 31" type="TB">...</Leg>
<Leg name="til fods" type="WALK">...</Leg>
</Trip>
</TripList>
如您所见,我们希望从第三个中获取所有腿部元素
这可能是一个非常愚蠢的问题,但我在其他任何地方都找不到合适的答案。怎么样:
xdoc.Descendants("Trip")[2].Descendants("Leg")
ElementAt
可能适合您
你要找的是
foreach (var Stykke in xdoc.Root.Elements("Trip").ElementAt(2).Elements("Leg"))
{
}
或者,如果您愿意,也可以使用ToList
,然后使用索引器获取结果:
foreach (var Stykke in xdoc.Root.Elements("Trip").ToList()[2].Elements("Leg"))
{
}
我不确定WP7是否允许您使用这些方法。如果没有,请评论并告诉我。使用LINQ to XML,您的查询如下
XDocument X = XDocument.Load(Path);
var ThirdTripElement = X.Element("TripList")
.Elements("Trip")
.ElementAt(2)
.Elements("Leg")
.Select(E => new { Name = E.Attribute("name").Value,
Type = E.Attribute("type").Value });
我不熟悉WP7,但是你能使用XPath吗?看不出这有什么不同。。。子体还返回一个
IEnumerable
,并且IEnumerable
没有索引器……我想补充一点,如果XmlDocument类是一个选项,我发现在需要离散地遍历XML文档时使用它会更令人满意。您如何知道他想要选择什么?否则,相当好的答案。OP可以更改所选项目。我认为问题在于读取XML标记,问题在于获取索引中的元素。
XDocument X = XDocument.Load(Path);
var ThirdTripElement = X.Element("TripList")
.Elements("Trip")
.ElementAt(2)
.Elements("Leg")
.Select(E => new { Name = E.Attribute("name").Value,
Type = E.Attribute("type").Value });