使用 LINQ to XML 解析深层嵌套属性时遇到问题
我一直在尝试在 c# 中解析此 xml
<schema uri=http://blah.com/schema >
<itemGroups>
<itemGroup description="itemGroup1 label="itemGroup1">
<items>
<item description="The best" itemId="1" label="Nutella"/>
<item description="The worst" itemId="2" label="Vegemite"/>
</items>
</itemGroup>
</itemGroups>
</schema>
\itemGroup1\Nutella-The best
\itemGroup1\Vegemite-The worst
任何帮助或指导将不胜感激。
I have been trying to parse this xml in c#
<schema uri=http://blah.com/schema >
<itemGroups>
<itemGroup description="itemGroup1 label="itemGroup1">
<items>
<item description="The best" itemId="1" label="Nutella"/>
<item description="The worst" itemId="2" label="Vegemite"/>
</items>
</itemGroup>
</itemGroups>
</schema>
\itemGroup1\Nutella-The best
\itemGroup1\Vegemite-The worst
Any help or direction would be appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
让我们分解一下我们正在做的事情:
xDoc.Descendants("item")
获取整个文档中的所有
元素Select(x => string.Format( format, args)
将我们从最后一个操作中获得的每个
投影为我们在 lambda 中指定的任何格式。 href="http://msdn.microsoft.com/en-us/library/b1csw23d.aspx" rel="nofollow noreferrer">格式化字符串。就 XML 树而言 。 ,我们“坐在”
级别,因此我们需要回滚树以使用Ancestors
获取父组的数据。由于该方法返回一个元素序列,因此我们知道我们需要第一个(离我们最近的),以便我们可以读取它的属性。现在您有了一个
IEnumerable
,XML 文档中的每个
都有一个,并且信息采用您指定的格式:Let's break down what we're doing:
xDoc.Descendants("item")
gets us all<item>
elements in the entire documentSelect(x => string.Format(format, args)
projects each<item>
we got from the last operation into whatever format we specify in the lambda. In this case, a formatted string.In terms of the XML tree, we're "sitting at" the
<item>
level, so we need to roll back up the tree to get the data for the parent group usingAncestors
. Since that method returns a sequence of elements, we know we want the first (nearest to us) so we can read its attribute.Now you have an
IEnumerable<string>
, one for each<item>
in your XML document and the information in the format you specified: