如何在 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<XmlNode>().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() 是一个好方法吗?的主要内容,如果未能解决你的问题,请参考以下文章
如何导出 C# dll 方法/函数以在 C++ 中使用它 [重复]
将 XmlNodeList 加载到 XmlDocument 中而不循环?