Удаление узлов DOM при пересечении NodeList

Я полагаю, что Вы могли просто использовать, связывают, монтируют обман, в /etc/fstab:

/path/to/read-write-view /path/to/write-only-view none bind 0 0

Так, Вы могли, вероятно, затем:

chmod a=wx /path/to/write-only-view
chmod a=rwx /path/to/read-write-view
17
задан mpromonet 3 September 2015 в 20:17
поделиться

3 ответа

Итак, учитывая, что удаление узлов во время обхода NodeList приведет к обновлению NodeList, чтобы отразить новую реальность, я предполагаю, что мои индексы станут недействителен, и это не сработает.

Таким образом, похоже, решение состоит в том, чтобы отслеживать элементы, которые нужно удалить во время обхода, и удалять их все впоследствии, когда NodeList больше не используется.

NodeList nodes = ...;
Set<Element> targetElements = new HashSet<Element>();
for (int i = 0; i < nodes.getLength(); i++) {
  Element e = (Element)nodes.item(i);
  if (certain criteria involving Element e) {
    targetElements.add(e);
  }
}
for (Element e: targetElements) {
  e.getParentNode().removeChild(e);
}
11
ответ дан 30 November 2019 в 12:44
поделиться

Согласно спецификации DOM, результат вызова node.getElementsByTagName ( "...") предполагается "живым", то есть любые изменения, внесенные в дерево DOM, будут отражены в объекте NodeList . Что ж, для соответствующих реализаций, то есть ...

Объекты NodeList и NamedNodeMap в DOM жив; то есть меняется на основная структура документа отражены во всех соответствующих NodeList и Объекты NamedNodeMap.

( Спецификация DOM )

Итак, когда вы изменяете древовидную структуру, соответствующая реализация изменит NodeList , чтобы отразить эти изменения.

7
ответ дан 30 November 2019 в 12:44
поделиться

Библиотека Practical XML теперь содержит NodeListIterator , который включает в себя NodeList и обеспечивает полную поддержку Iterator (это казалось лучшим выбором, чем публикация кода что мы обсуждали в комментариях). Если вы не хотите использовать полную библиотеку, скопируйте этот единственный класс: http://practicalxml.svn.sourceforge.net/viewvc/practicalxml/trunk/src/main/java/net/sf /practicalxml/util/NodeListIterator.java?revision=125&view=markup inventory

1
ответ дан 30 November 2019 в 12:44
поделиться
Другие вопросы по тегам:

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