【问题标题】:Can't figure out XPath Query using HTML Agility Pack for WP7无法使用适用于 WP7 的 HTML Agility Pack 找出 XPath 查询
【发布时间】:2012-07-12 03:29:49
【问题描述】:

您好,我有这个特定的 HTML 代码,但我找不到这个特定 HTML 块的正确 XPath,所以我可以解析它

<aside id="id1">
<dl class="class1a class1b">
    <dd>value1</dd>
    <dt><em>**value2**</em> value3</dt>
</dl>
<dl class="class2a class2b">
    <dd>value4</dd>
    <dt class="class3">
        <strong>**value5**<span>value6</span></strong>
        </dt>
    </dl>
 </aside>

问题是我需要 value2value5

我怎样才能实现它?

【问题讨论】:

    标签: c# windows-phone-7 html-parsing html-agility-pack


    【解决方案1】:
    var value2 = doc.DocumentNode
                    .SelectSingleNode("//dl[@class='class1a class1b']/dt/em")
                    .InnerText;
    var strong = doc
                 .DocumentNode
                 .SelectSingleNode("//dl[@class='class2a class2b']/dt[@class='class3']/strong");
    strong.RemoveChild( strong.LastChild );
    var value5 = strong.InnerText;
    

    【讨论】:

    • 我在两个值上都得到了一个空引用异常。我忘了提一下,我会解决我的问题,即 class1 和 class2 是 2 个值的一部分,中间有一个空格。跨度>
    • @AlexanderTalavari 只需将 class1class2 替换为您的新值。它应该可以工作。
    • 谢谢你。像魅力一样工作
    【解决方案2】:
    \\em | \\strong
    

    应该可以解决问题。然后,您可以从每个节点检索文本值。这将在 xml 片段中找到所有 em 和 strong 标签。 这是 xpath 运算符的list

    如果您需要进一步处理文本值(在这种情况下从value5 中删除星号,这将在 xpath 查询范围之外完成。

    【讨论】:

    • 星号是 SO 的粗体。我只需要检索这两个特定的值。不是所有的 em 和 strongs。这两个值在我的 HTML 中只出现一次
    猜你喜欢
    • 2011-08-24
    • 2019-07-11
    • 1970-01-01
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 2013-02-13
    • 2020-01-17
    • 1970-01-01
    相关资源
    最近更新 更多