2015-06-30 3 views
0

Я пишу приложение форм C#, которое имеет дело с html-документом. У меня есть список объектов, где каждый объект имеет XPath для узла html.Как обновить XPath при добавлении узла

При добавлении узла html XPath для этих объектов изменяется.

Мой вопрос в следующем: как наилучшим образом обновить все значения XPath после внесения дополнения в документ? В настоящее время я использую Html Agility Pack.

EDIT

Я попытался следующие в коде, но я не уверен, если Html Agility пакет имеет эту функцию, или я могу писать свой код неправильно:

  1. Перед внесением каких-либо изменений к HTMLDocument, создать объект HtmlNode для каждого XPath, что у меня есть
  2. Вставьте новый HtmlNode

Я создание HtmlNodes со следующим кодом:

HtmlNode htmlNode1 = testingHtmlDocument.DocumentNode.SelectSingleNode("/html[1]/body[1]/div[1]"); 
  1. Если значения XPath в каждом из HtmlNodes быть обновлены после добавления было сделано в HTMLDocument? Работает ли XPath на этом пути ?
  2. За исключением XPath, что является лучшим способом идентифицировать HtmlNode, без добавления каких-либо дополнительных данных в HtmlNode?

Спасибо.

ответ

0

Если вам нужно обновлять XPaths каждый раз, вы, вероятно, используете индексирование. И если вам нужно часто вносить изменения, возможно, это не лучший способ. Может быть, вы можете добавить ID к тегам? Тогда вы могли бы использовать: «// * [@ ид =„0123-654-97854“]»

  • идентификаторы могут быть сгенерированы с помощью GUIDs
  • Если вы не хотите использовать идентификатор по умолчанию атрибут по какой-либо причине вы также можете пойти для пользовательских данных myapp-id = "..."
  • Также может быть полезно указать путь к тегу (без индексов), например/Tag/Node/* [ @ data-myapp-id = '...']
+0

Я бы предпочел не добавлять идентификаторы к тегам, если не нужно. Можете ли вы посмотреть мое редактирование? – user3736648

+0

Как вы это используете, вам нужно будет изменить XPath всех узлов на том же уровне после узла, который вы добавили/удалили, и для всех его детей. Наверное, нет другого пути. –

+0

Благодарим вас за помощь. – user3736648

Смежные вопросы