如何在添加节点时更新XPath

时间:2015-06-30 09:00:50

标签: c# xpath html-agility-pack

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

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

我的问题是:在添加文档后,更新所有XPath值的最佳方法是什么?我目前正在使用Html Agility Pack。

修改

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

  1. 在对HtmlDocument进行任何更改之前,请创建一个HtmlNode 我拥有的每个XPath的对象
  2. 插入新的HtmlNode
  3. 我正在使用以下代码创建HtmlNodes:

    HtmlNode htmlNode1 = testingHtmlDocument.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]");
    
    1. 每个HtmlNodes中的XPath值是否应在更新后更新 已添加到HtmlDocument? XPath是否适用于此 方式是什么?
    2. 除了XPath之外,识别HtmlNode的最佳方法是什么, 没有向HtmlNode添加任何其他数据?
    3. 感谢。

1 个答案:

答案 0 :(得分:0)

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

  • 可以使用GUID生成ID
  • 如果由于某种原因您不想使用默认的id属性,您也可以使用自定义数据-myapp-id =“...”
  • 仍然可以指定标记的路径(没有索引),例如/ Tag / Node / * [@ data-myapp-id ='...']