添加节点时如何更新 XPaths

How to update XPaths when adding a node

我正在编写一个处理 html 文档的 C# 表单应用程序。我有一个对象列表,其中每个对象都有一个 html 节点的 XPath。

添加 html 节点时,上述对象的 XPath 发生变化。

我的问题是:在向文档添加内容后更新所有 XPath 值的最佳方法是什么?我目前正在使用 Html 敏捷包。

编辑

我在代码中尝试了以下内容,但不确定 Html Agility Pack 是否具有此功能,或者我可能编写的代码不正确:

  1. 在对 Html 文档进行任何更改之前,创建一个 Html 节点 我拥有的每个 XPath 的对象
  2. 插入新的Html节点

我正在使用以下代码创建 Html 节点:

HtmlNode htmlNode1 = testingHtmlDocument.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]");
  1. 每个 Html 节点中的 XPath 值是否应该在 在Html文件中添加了什么? XPath 是否起作用 方式?
  2. 除了 XPath,识别 HtmlNode 的最佳方法是什么, 不向 HtmlNode?
  3. 添加任何额外数据

谢谢。

如果您需要每次都更新 XPath,您可能会使用索引。如果您需要经常进行更改,也许这不是最好的方法。 也许你可以在标签中添加一个 ID? 然后你可以使用:“//*[@id='0123-654-97854']”

  • 可以使用 GUID 生成 ID
  • 如果您出于某种原因不想使用默认的 id 属性,您也可以使用自定义 data-myapp-id="..."
  • 像 /Tag/Node/*[@data-myapp-id='...']
  • 一样指定标签的路径(没有索引)可能也很有用