我正在尝试获取元素标题和运行时(同级),其中运行时值大于输入值。我使用xpath表达式的c代码是:

ElementValue = 140;

nodeList = root.SelectNodes(@"/moviedb/movie[./runtime>'" + ElementValue + "'/title | /moviedb/movie[./runtime>'" + ElementValue + "']/runtime");

这个xpath表达式没有返回任何内容。
我的XML文件:
  <moviedb>
      <movie>
        <imdbid>tt0120689</imdbid>
        <genres>Crime,Drama,Fantasy,Mystery</genres>
        <languages>English,French</languages>
        <country>USA</country>
        <rating>8.5</rating>
        <runtime>189</runtime>
        <title lang="english">The Green Mile</title>
        <year>1999</year>
      </movie>
      <movie>
        <imdbid>tt0415800</imdbid>
        <genres>Action,Animation,Drama,Thriller</genres>
        <languages>English</languages>
        <country>USA</country>
        <rating>4.5</rating>
        <runtime>139</runtime>
        <title lang="english">Fight Club</title>
        <year>2004</year>
      </movie>
    </moviedb>

最佳答案

您可以改为使用linq2xml

var doc=XDocument.Load(path);
var movies=doc.Elements("movie")
              .Where(x=>(int)x.Element("runtime")>input)
              .Select(x=>new
                     {
                         Title=x.Element("title").Value,
                         Runtime=(int)x.Element("runtime")
                     });

你现在可以在电影中反复播放
foreach(var movie in movies)
{
    movie.Title;
    movie.Runtime;
}

关于c# - XML Xpath表达式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23467491/

10-13 06:50