使用 HTML Agility Pack 和 Linq 解析 html

2023-11-22

我有以下 HTML

(..)
<tbody>
 <tr>
  <td class="name"> Test1 </td>
  <td class="data"> Data </td>
  <td class="data2"> Data 2 </td>
 </tr>
 <tr>
  <td class="name"> Test2 </td>
  <td class="data"> Data2 </td>
  <td class="data2"> Data 2 </td>
 </tr>
</tbody>
(..)

我所拥有的信息是名称=>所以“Test1”和“Test2”。我想知道的是如何根据我拥有的名称获取“data”和“data”中的数据。

目前我正在使用:

var data =
    from
        tr in doc.DocumentNode.Descendants("tr")
    from   
        td in tr.ChildNodes.Where(x => x.Attributes["class"].Value == "name")
    where
        td.InnerText == "Test1"
    select tr;

但我得到{"Object reference not set to an instance of an object."}当我尝试查看时data


至于您的尝试,您的代码有两个问题:

  1. ChildNodes很奇怪 - 它还返回空白文本节点,该节点没有class属性(当然不能有属性)。
  2. 正如詹姆斯·沃尔福德(James Walford)评论的那样,文本周围的空格很重要,您可能需要修剪它们。

通过这两个更正,可以实现以下效果:

var data =
      from tr in doc.DocumentNode.Descendants("tr")
      from td in tr.Descendants("td").Where(x => x.Attributes["class"].Value == "name")
     where td.InnerText.Trim() == "Test1"
    select tr;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 HTML Agility Pack 和 Linq 解析 html 的相关文章

  • 我如何才能等待多个事情

    我正在使用 C 11 和 stl 线程编写一个线程安全队列 WaitAndPop 方法当前如下所示 我希望能够将一些内容传递给 WaitAndPop 来指示调用线程是否已被要求停止 如果 WaitAndPop 等待并返回队列的元素 则应返回
  • 通过 CMIS (dotCMIS) 连接到 SP2010:异常未经授权

    我正在使用 dotCMIS 并且想要简单连接到我的 SP2010 服务器 我尝试用 C 来做到这一点 如下所示http chemistry apache org dotnet getting started with dotcmis htm
  • 以文化中立的方式将字符串拆分为单词

    我提出了下面的方法 旨在将可变长度的文本拆分为单词数组 以进行进一步的全文索引处理 删除停止词 然后进行词干分析 结果似乎不错 但我想听听关于这种实现对于不同语言的文本的可靠性的意见 您会建议使用正则表达式来代替吗 请注意 我选择不使用 S
  • 动态加载程序集的应用程序配置

    我正在尝试将模块动态加载到我的应用程序中 但我想为每个模块指定单独的 app config 文件 假设我的主应用程序有以下 app config 设置
  • 查找c中结构元素的偏移量

    struct a struct b int i float j x struct c int k float l y z 谁能解释一下如何找到偏移量int k这样我们就可以找到地址int i Use offsetof 找到从开始处的偏移量z
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 从Web API同步调用外部api

    我需要从我的 Web API 2 控制器调用外部 api 类似于此处的要求 使用 HttpClient 从 Web API 操作调用外部 HTTP 服务 https stackoverflow com questions 13222998
  • 如何使用 ICU 解析汉字数字字符?

    我正在编写一个使用 ICU 来解析由汉字数字字符组成的 Unicode 字符串的函数 并希望返回该字符串的整数值 五 gt 5 三十一 gt 31 五千九百七十二 gt 5972 我将区域设置设置为 Locale getJapan 并使用
  • HTTPWebResponse 响应字符串被截断

    应用程序正在与 REST 服务通信 Fiddler 显示作为 Apps 响应传入的完整良好 XML 响应 该应用程序位于法属波利尼西亚 在新西兰也有一个相同的副本 因此主要嫌疑人似乎在编码 但我们已经检查过 但空手而归 查看流读取器的输出字
  • 如何从 appsettings.json 文件中的对象数组读取值

    我的 appsettings json 文件 StudentBirthdays Anne 01 11 2000 Peter 29 07 2001 Jane 15 10 2001 John Not Mentioned 我有一个单独的配置类 p
  • 不同枚举类型的范围和可转换性

    在什么条件下可以从一种枚举类型转换为另一种枚举类型 让我们考虑以下代码 include
  • 在 ASP.NET 5 中使用 DI 调用构造函数时解决依赖关系

    Web 上似乎充斥着如何在 ASP NET 5 中使用 DI 的示例 但没有一个示例显示如何调用构造函数并解决依赖关系 以下只是众多案例之一 http social technet microsoft com wiki contents a
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C++ OpenSSL 导出私钥

    到目前为止 我成功地使用了 SSL 但遇到了令人困惑的障碍 我生成了 RSA 密钥对 之前使用 PEM write bio RSAPrivateKey 来导出它们 然而 手册页声称该格式已经过时 实际上它看起来与通常的 PEM 格式不同 相
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 是否可以在 .NET Core 中将 gRPC 与 HTTP/1.1 结合使用?

    我有两个网络服务 gRPC 客户端和 gRPC 服务器 服务器是用 NET Core编写的 然而 客户端是托管在 IIS 8 5 上的 NET Framework 4 7 2 Web 应用程序 所以它只支持HTTP 1 1 https le
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 对来自流读取器的过滤数据执行小计

    编辑问题未得到解答 我有一个基于 1 个标准的过滤输出 前 3 个数字是 110 210 或 310 给出 3 个不同的组 从流阅读器控制台 问题已编辑 因为第一个答案是我给出的具体示例的字面解决方案 我使用的实际字符串长度为 450 个

随机推荐

  • Internet Explorer 中跨站点请求的访问控制

    我正在尝试从多个域向单个域发出 AJAX 调用来处理该请求 通过在处理服务器上设置标头 在 Firefox 和 Chrome 中启用跨域很容易 header Access Control Allow Origin 但这无助于在 Intern
  • 如何在 JSX 中添加自定义 html 属性

    背后有不同的原因 但我想知道如何简单地向 JSX 中的元素添加自定义属性 编辑 更新以反映 React 16 React 16 原生支持自定义属性 这意味着向元素添加自定义属性现在就像将其添加到render函数 就像这样 render re
  • 是什么导致异常中的递归原因?

    当在调试器中查看 Java 中的异常时 您经常会发现原因是无限递归的 我假设它是无限的 e g Exception1 Caused by gt Exception2 Caused by gt Exception2 Caused by gt
  • linux如何用同一个驱动程序驱动多个网卡?

    我最近在学习linux网络驱动 我想知道如果我的板上有很多相同类型的网卡 内核如何驱动它们 内核是否需要多次加载同一个驱动程序 我认为这是不可能的 insmod不会这样做 那么我怎样才能让所有同类卡同时工作呢 regards 每张卡的状态
  • 只显示 ng-repeat 的第一个元素

    如何仅显示角度中的第一个元素 我在用着ng repeat像这样 div div product price div div 但既然我不重复 那么我不必使用ng repeat 我怎样才能让它只显示第一个 而不必进入 ng repeat 您可能
  • 从 SQL Server 数据库获取“下一个”行并在单个事务中对其进行标记

    我有一个用作队列的 SQL Server 表 它正在由多线程 很快将成为多服务器 应用程序进行处理 我想要一种方法让进程从队列中声明下一行 将其标记为 进程中 而多个线程 或多个服务器 不可能同时声明同一行 有没有办法更新一行中的标志并同时
  • 让 CMake 为 MSVC 构建共享库 [重复]

    这个问题在这里已经有答案了 我一直在使用 CMake 在 Unix 环境中构建 C 和 C 项目 但是 我也想开始在 MSVC 中进行编译 并且我试图了解 cmake 文档 但我遇到了困难 当我尝试构建时 我不断收到以下消息 链接 致命错误
  • 将特定于页面的 Javascript 添加到 CakePHP 中的每个视图

    为了使我的脚本保持可维护性 我将把每个脚本移到自己的文件中 按控制器和操作组织 scripts which only apply to views posts add ctp app webroot js page posts add js
  • 如何让 Ansible 解释变量内的变量?

    每当我尝试让 Ansible 解释嵌套变量 即另一个变量中的变量 时 我都无法获得预期的结果 给定变量 key bar foo bar baz foo bar baz 我尝试过这三种方法 但动态访问密钥的运气不佳bar字典的foo或钥匙fo
  • QueryDSL 窗口函数

    如何使用窗口函数编写查询并选择 QueryDSL 中的所有字段 在文档中有一个这样的例子 query from employee list SQLExpressions rowNumber over partitionBy employee
  • 电子邮件:[Firebase] 客户端对 Cloud Firestore 数据库的访问权限将在 X 天后到期

    我收到一封电子邮件 表明我正在 测试模式 下进行开发 但它使我的数据库完全向互联网开放 我最初接受的默认规则如下所示 rules version 2 service cloud firestore match databases datab
  • Android 位图共享意图 - 是否可以在共享之前不保存它?

    我尝试使用共享意图从我的应用程序导出位图 而不保存临时位置的文件 我找到的所有例子都是两步的 1 保存到SD卡并为该文件创建Uri 2 用这个Uri开始意图 是否可以在不需要 WRITE EXTERNAL STORAGE 权限的情况下保存文
  • CListCtrl:如何保持滚动位置?

    我有一个 CListCtrl 报告样式 我可以在其中清除列表并在某些时间重新填充它 我想在执行此操作时保持垂直滚动位置 我发现有几种看起来很有前途的方法 EnsureVisible GetScrollPos SetScrollPos Get
  • 如何从预处理器宏中识别平台/编译器?

    我正在编写一个跨平台代码 它应该在linux windows Mac OS 上编译 在windows上 我必须支持visual studio和mingw 有一些特定于平台的代码 我应该将其放入 ifdef endif环境 比如这里我放置了w
  • 使用 Azure DevOps 管道的 AzureFileCopy 失败 - “AzCopy.exe 以非零退出退出

    我尝试将 ARM 模板复制到存储但失败 YML 可能出现什么问题 ERROR AzCopy AzCopy exe logout INFO Logout succeeded INFO AzCopy exe A newer version 10
  • 如何解决“资源”参数中的“重复项目”错误

    在处理我的项目时 我遇到了以下错误 在 资源 参数中多次指定了 项 资源 参数不支持重复项目 删除了项目名称 没关系 但是 我不知道如何解决这个问题 在 Visual C Express 中哪里可以找到此参数 我猜 项是一种形式 那么 从最
  • 替换部分超链接

    我需要修改 xls 工作簿中的大量超链接 我的链接是这样的 mysrv001 some path documents doc我需要更换 mysrv001 with mysrv002 我尝试了类似的操作 但收到错误 对象不支持此属性或方法 我
  • 如何使用 Python 图像库 (PIL) 识别非照片或“无趣”图像

    我有数千张图像 我需要剔除那些不是照片或其他 有趣 的图像 例如 无趣 的图像可能全部是一种颜色 或者大部分是一种颜色 或者是简单的图标 徽标 该解决方案不必是完美的 只要足以删除最不有趣的图像即可 到目前为止 我最好的想法是对像素进行随机
  • 匹配多种类型以实现模板专业化解析

    简单地忽略一个事实 即正常的函数重载将更好地服务于这个示例 它只是作为学习模板编程的一种方式 话虽如此 欢迎您评论与函数模板专业化相比 使用函数重载所获得的好处 差异 尽管这可能值得一个自己的问题 考虑以下示例 template
  • 使用 HTML Agility Pack 和 Linq 解析 html

    我有以下 HTML tbody tr td class name Test1 td td class data Data td td class data2 Data 2 td tr tr td class name Test2 td td