我试图使用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包含表达式的东西。当我使用完全匹配语法时,一切正常。
再次感谢
答案 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);