Что лучший способ состоит в том, чтобы однозначно определить узел DOM?

Что путь состоит в том, чтобы однозначно определить все узлы DOM в документе HTML. Для иллюстрирования, что я имею в виду вот, (вымышленный) пример:

  • Сценарий X случайным образом выбирает узел DOM из document.html.
  • Сценарий X должен сказать сценарий Y, какой узел DOM он выбрал.
  • Как сценарий X однозначно определяет узел DOM, который он выбрал так, чтобы сценарий Y знал точно, какой узел это находится в document.html?

Я действительно интересуюсь тем, как однозначно определить узел DOM так, чтобы сценарий Y мог определить его и управлять им. Предпочтительно, это должно работать с текстовыми узлами также. Я думал о XPath, возможно, но я не уверен, как генерировать уникальный XPath к любому данному узлу.

8
задан Olivier Lalonde 15 January 2010 в 12:09
поделиться

3 ответа

Отсутствует прямая замена. Эта запись в блоге описывает, как выполнить эквивалентное действие, определяя последнюю фиксацию, затем определяя хэш для файла в этой фиксации, а затем выгружая его.

git log ...
git ls-tree ...
git show -p ...

(запись блога содержит опечатки и использует вышеуказанное с командой svn )

-121--811250-

На самом деле это не ошибка. Это проблема с изменениями версий собственного проекта! Поскольку в конечном прогоне не используются исходные импортированные ссылки при компиляции!

Например, я создавал сервер чата, клиент. Я использовал структуру пакетов для передачи данных о клиентском проекте. Затем импортирована та же ссылка на серверный проект.

При вызове Packet packet = (Packet) bineyFormatter.Deserialize (stream); У меня та же ошибка. Поскольку фактическая выполняемая ссылка в серверном проекте не является ссылкой сейчас в клиентском проекте! Потому что я перестраивал клиентский проект много раз после!

При создании < new object > = (< new object >) < old object > новый объект всегда должен быть более новой или такой же версией, как старый объект!

Поэтому я построил отдельный проект для создания DLL для класса Packet и импортировал файл DLL в оба проекта.

При изменении класса Packet необходимо снова импортировать ссылку как на клиент, так и на сервер.

Тогда кастинг не даст вышеуказанного исключения!

-121--4245478-

Вы должны иметь возможность определить уникальный XPath, работая в обратном направлении от узла к корневому узлу, и отслеживая узел, на котором вы находитесь, и который родной брат, что вы получаете что-то вроде:

/a[1]/b[2]/c[101]/text()

так что это 101-й C узел под вторым B узлом и т.д. Это уникальный путь , который можно скопировать со ссылкой на исходный документ

.
6
ответ дан 5 December 2019 в 21:19
поделиться

Ну, выражение XPath, которое приводит к одному узлу, должно быть уникальным. Что вы подразумеваете под «как генерировать уникальный XPath к любому данному узлу»?

0
ответ дан 5 December 2019 в 21:19
поделиться

Порядковые позиции детей вдоль осей XPath. Узлы сильно упорядочены, и поэтому говоря:

ребенок 1 ребенка 3 ребенка 4 ребенка 5.

должен сделать это.

0
ответ дан 5 December 2019 в 21:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: