如何在 c# 中查找/计数 xmlnodelist - xmlnodelist.childnodes.asqueryable() 是一个好方法吗?

Posted

技术标签:

【中文标题】如何在 c# 中查找/计数 xmlnodelist - xmlnodelist.childnodes.asqueryable() 是一个好方法吗?【英文标题】:how to do find/count on xmlnodelist in c# - is xmlnodelist.childnodes.asqueryable() a good way? 【发布时间】:2014-11-17 16:17:18 【问题描述】:

我有一个合法的 XmlNodeList,我们称之为 nodelist 我可以调用 nodelist.ChildNodes 并且有效 我也可以调用 nodelist.ChildNodes.AsQueryable() 但是当我尝试 nodelist.ChildNodes.AsQueryable().Where(x=>x....) 失败

我已经包含了

using System.Linq

但我有点不知所措如何 1.查找特定节点 2.统计以特定键ie开头的节点

<key1 attrib1="xxx">yyy</key1>

key="key1" 有多少个节点

请注意:在我因重复发布而被骂之前 - 我花了好几个小时试图弄清楚如何做到这一点 堆栈上的任何内容都不够清楚(无论如何对我来说......)

谢谢-你们太棒了

更新:好的,有趣的是 即使我被降级了 - 没有人(立即)对我的确切问题有解决方案 这是如何使用 xmlnodelist 人们所拥有的是替代答案 - 都很好 所以看起来 xmlnodelist asqueryable 并没有顾名思义

1) 使用 xmlnode.selectnodes() 可以在这里找到一个很好的例子Select Xml Node using Linq to XML

2) XML 类(见选择的答案)

【问题讨论】:

您在帖子中的问题与标题无关(部分原因是您根本不需要使用AsQueryable 来查找/计算节点)...可能是一些 XML/XPath 教程你需要。但是,如果您真的希望 AsQueryable 有用,您应该首先将 ChildNodes 转换为强类型可枚举:nodelist.ChildNodes.Cast&lt;XmlNode&gt;().AsQueryable() thx @AlexeiLevenkov - 是的,我很容易找到错误的树。如果有更好的方法来查找/计数请发帖,我会调整标题。谢谢! 很难说你想做什么。您应该创建一个SSCCE,其中包含您已经拥有的相关代码、关于失败原因的清晰描述,并准确包含您想要的输出。 感谢标题编辑。确保从帖子中删除不相关的感谢信/搜索了很多。请查看此搜索结果bing.com/search?q=c%23+xml+select+nodes,看看您是否可以澄清您找不到哪些信息。还显示不同“以特定键开头的节点”的示例 - XML 中的节点具有名称、命名空间和属性 - 但没有“键”。 thx @AlexeiLevenkov - 好吧,仅供参考 - 我知道你想要 thx/search 很多东西 - 但显然它需要说明,因为我已经降级了。我还想对人们的知识和乐于助人表示赞赏——世界上这样的人太少了。和山姆 - 我最初没有发布 SSCCE,因为它在原始标题的范围内没有必要。谢谢阿列克谢的方向。现在去看看 【参考方案1】:

尝试将您的 XML 放入自定义类并查询自定义类。这是更多的工作,但人是值得的回报。查看this 问题,了解如何操作。

【讨论】:

谢谢@volearix!从来没想过这个概念,但它很吸引人 没问题,这是我最近在做的一个项目中的一个要求,最终确实让事情变得非常容易。

以上是关于如何在 c# 中查找/计数 xmlnodelist - xmlnodelist.childnodes.asqueryable() 是一个好方法吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 xmlnodelist 获取 xml 节点

如何导出 C# dll 方法/函数以在 C++ 中使用它 [重复]

将 XmlNodeList 加载到 XmlDocument 中而不循环?

c# .net 怎么将一个xml字符串 转换成一个xmlnode ,(不是xmldocument)

怎样获取xml中当前节点的直接孩子节点个数

在c#中找出一个数组中出现次数最多的元素,求各种方法,要详细的代码