property .count返回xpath中的所有xml节点

时间:2014-05-04 01:35:21

标签: c# xpath

我试图使用xpath过滤掉一个xml文档,并计算包含给定字符串的节点数。 这是我的代码

    string ElementValue = Action
    nodeList = root.SelectNodes(@"/moviedb/movie[contains(genres, "+ ElementValue +")]");
                return nodeList.Count;

和XML的一部分

    <moviedb>
<movie>
    <imdbid>tt2226321</imdbid>
    <genres>Thriller</genres>
    <languages>English</languages>
    <country>USA</country>
    <rating>8</rating>
    <runtime>155</runtime>
    <title>The Dark Knight</title>
    <year>2014</year>
  </movie>
  <movie>
    <imdbid>tt1959490</imdbid>
    <genres>Action,Adventure,Drama</genres>
    <languages>English</languages>                                        
    <country>USA</country>
    <rating>6.5</rating>
    <runtime>138</runtime>
    <title>Noah</title>
    <year>2014</year>
  </movie>
</moviedb>

我猜这是xpath包含表达式的东西。当我使用完全匹配语法时,一切正常。

再次感谢

1 个答案:

答案 0 :(得分:0)

尽可能在XPath中使用单引号,让您的生活更轻松:

nodeList = root.SelectNodes(@"/moviedb/movie[contains(genres, '"+ ElementValue +"')]");

或者您可以使用String.Format()方法以更直观的方式将变量中的值连接成单个字符串结果(特别是当您将许多变量“注入”字符串时):

var xpath = String.Format("/moviedb/movie[contains(genres, '{0}')]", ElementValue);
nodeList = root.SelectNodes(xpath);