【问题标题】:XPath returns nothing, works everywhere elseXPath 不返回任何内容,在其他任何地方都可以使用
【发布时间】:2013-03-04 03:03:20
【问题描述】:

尝试使用 XPath 解析此代码:http://pastebin.com/Un9x1BRX 正在运行的页面:http://fonix.dyndns.org:40000/soasc/

我想从这部分得到作曲家的名字:

          <td>
            <div class="hl3">
              <a href=
              "index.php?av=0&amp;sb=SOASC&amp;sc=Markus+Pyykk%F6+%28Mankeli%29&amp;clist=1&amp;did=">
              +</a>
            </div><a href=
            "index.php?av=0&amp;sb=SOASC&amp;sc=Markus+Pyykk%F6+%28Mankeli%29&amp;clist=1&amp;did=">Markus
            Pyykk&#246; (Mankeli)</a>
          </td>

这样它就会返回Markus Pyykkö (Mankeli)

我的 XPath ./tr[@class = 'table1' or @class = 'table2']/td/a 在每个在线验证器中都能正常工作,但 SelectNodes() 什么也不返回。是我的错还是敏捷包坏了??

编辑:我正在循环播放这样的曲目:

HtmlNodeCollection songs = doc.DocumentNode.SelectNodes("//*[@class = 'table1' or @class = 'table2']");

            foreach (HtmlNode song in songs)
            {
and so on

【问题讨论】:

  • 你的例子中的&lt;tr&gt;在哪里?
  • ,Pastebin 文档的第一行。
  • @skmf 您的代码有效并从示例 html 中返回一个 tr
  • 在这里,它不断抛出 NullReferenceException。 :c i.imgur.com/xLEqcgp.png

标签: c# html xpath html-agility-pack


【解决方案1】:

你确定?下面的代码适用于我,

var w = new HtmlWeb();
var d = w.Load("http://fonix.dyndns.org:40000/soasc/");
var xpath = "//tr[@class ='table1' or @class = 'table2']/td/a";
var anchors = d.DocumentNode.SelectNodes(xpath);

【讨论】:

  • 我忘了提(对不起!),因为每页有多个曲目,我正在循环播放它们。 (见上文)
猜你喜欢
相关资源
最近更新 更多
热门标签