【问题标题】:Count parent nodes which have 2 types of child nodes - specifically 1 "boy" node and 1 "girl" node each计算具有 2 种子节点的父节点 - 具体来说,每个节点有 1 个“男孩”节点和 1 个“女孩”节点
【发布时间】:2012-02-14 10:15:33
【问题描述】:

我有包含这样数据的 XML 文件...

    <parent>
        <boy/>
    </parent>
    <parent>
        <girl/>
    <parent>
    <parent>
        <boy/>
        <girl/>
    </parent>

...我想计算同时拥有两种类型的子节点 IE 的父母:各有 1 个男孩和 1 个女孩。在上面的例子中,答案是 1,因为只有 1 个父母同时有男孩和女孩。我正在使用 xpath 来查询 XML。我目前拥有的是这样的......

 XmlDocument xmlDoc = new XmlDocument();
 xmlDoc.Load(inXML);
 int ParentsWithBothKids = xmlDoc.SelectNodes("MY QUERY HERE!!!").Count;

我尝试的各种查询要么将错误视为无效 xpath,要么总是返回 0,即使我使用的小型测试 XML 文件肯定有一些。

关于我可以使用什么 xpath 查询的任何想法?

【问题讨论】:

  • “我尝试的各种查询”是什么?
  • 至少 1 个男孩和 1 个女孩或 1 个或多个男孩和 1 个或多个女孩?

标签: .net xml xpath siblings


【解决方案1】:

尝试将parent[boy and girl] 作为您的 xpath 查询。

查看 MSDN 上的XPath Examples

【讨论】:

  • 我之前确实尝试过,但没有成功,但根据您的建议,我再次尝试(我也玩过您链接的 MSDN 示例),然后我注意到了... XML与我想象的结构略有不同!嗬!所以我稍微调整了 Xpath 查询,它工作了。感谢您的帮助 - 这是一次非常有用的健全性检查。
【解决方案2】:

使用

count(//parent[boy and girl])

当计算此 XPath 表达式时,结果是 XML 文档中所有 parent 元素的计数,因此每个元素都有一个 boy 和一个 girl 子元素。

要评估这样的 XPath 表达式(不选择节点),请使用 XPathNavigator.Evaluate()

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多