添加节点时如何更新 XPaths
How to update XPaths when adding a node
我正在编写一个处理 html 文档的 C# 表单应用程序。我有一个对象列表,其中每个对象都有一个 html 节点的 XPath。
添加 html 节点时,上述对象的 XPath 发生变化。
我的问题是:在向文档添加内容后更新所有 XPath 值的最佳方法是什么?我目前正在使用 Html 敏捷包。
编辑
我在代码中尝试了以下内容,但不确定 Html Agility Pack 是否具有此功能,或者我可能编写的代码不正确:
- 在对 Html 文档进行任何更改之前,创建一个 Html 节点
我拥有的每个 XPath 的对象
- 插入新的Html节点
我正在使用以下代码创建 Html 节点:
HtmlNode htmlNode1 = testingHtmlDocument.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]");
- 每个 Html 节点中的 XPath 值是否应该在
在Html文件中添加了什么? XPath 是否起作用
方式?
- 除了 XPath,识别 HtmlNode 的最佳方法是什么,
不向 HtmlNode?
添加任何额外数据
谢谢。
如果您需要每次都更新 XPath,您可能会使用索引。如果您需要经常进行更改,也许这不是最好的方法。
也许你可以在标签中添加一个 ID?
然后你可以使用:“//*[@id='0123-654-97854']”
- 可以使用 GUID 生成 ID
- 如果您出于某种原因不想使用默认的 id 属性,您也可以使用自定义 data-myapp-id="..."
- 像 /Tag/Node/*[@data-myapp-id='...']
一样指定标签的路径(没有索引)可能也很有用
我正在编写一个处理 html 文档的 C# 表单应用程序。我有一个对象列表,其中每个对象都有一个 html 节点的 XPath。
添加 html 节点时,上述对象的 XPath 发生变化。
我的问题是:在向文档添加内容后更新所有 XPath 值的最佳方法是什么?我目前正在使用 Html 敏捷包。
编辑
我在代码中尝试了以下内容,但不确定 Html Agility Pack 是否具有此功能,或者我可能编写的代码不正确:
- 在对 Html 文档进行任何更改之前,创建一个 Html 节点 我拥有的每个 XPath 的对象
- 插入新的Html节点
我正在使用以下代码创建 Html 节点:
HtmlNode htmlNode1 = testingHtmlDocument.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]");
- 每个 Html 节点中的 XPath 值是否应该在 在Html文件中添加了什么? XPath 是否起作用 方式?
- 除了 XPath,识别 HtmlNode 的最佳方法是什么, 不向 HtmlNode? 添加任何额外数据
谢谢。
如果您需要每次都更新 XPath,您可能会使用索引。如果您需要经常进行更改,也许这不是最好的方法。 也许你可以在标签中添加一个 ID? 然后你可以使用:“//*[@id='0123-654-97854']”
- 可以使用 GUID 生成 ID
- 如果您出于某种原因不想使用默认的 id 属性,您也可以使用自定义 data-myapp-id="..."
- 像 /Tag/Node/*[@data-myapp-id='...'] 一样指定标签的路径(没有索引)可能也很有用