2014-12-28 5 views
0

Я собираюсь проверить, что если объект java дерева дерева содержит другой объект java дерева дерева или нет? Каков наиболее эффективный способ сделать это?Метод Java, чтобы увидеть, является ли объект дерева дерева подмножеством другого объекта дерева дерева

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

Например, посмотрите на этот XML:

<a class='x'>Hello 
<b>How are you?</b> 
<a class='x'>I am fine!</a> 
</field1> 

Когда я использую XPath».//*[@class='x"]»два узла должны быть выбраны, что один из них является родителем другой. Я хочу выбрать только родительский. Для этого почему-то нужно проверить, является ли один из выбранных узлов (оба дерева DOM) дочерним по отношению к другому дереву DOM или нет.

+0

Документ внедрен в узел, поэтому любой элемент может быть корнем другого документа. Если у вас есть unmarshalled XML-документ, не было бы никаких указаний на то, что некоторый Element является другим корнем DOM-дерева. Не уверен, что вы спрашиваете здесь. – laune

+0

Уважаемый @laune, я редактировал вопрос. Надеюсь, теперь это ясно. –

ответ

0

В любом случае вам придется выполнять поиск по ширине в документе, чтобы найти элемент (или элементы) на некоторой минимальной глубине. Это даст вам один или несколько элементов с @ class = "x". Вы можете остановиться здесь, если это все, что вы хотите знать. Если вы хотите продолжить, исключите эти элементы из набора узлов, которые будут исследованы на следующей итерации.

+0

Это не достаточно быстро в худшем случае. –

+0

Ну, выбор всех узлов путем оценки XPath './/*[@ class = 'x']' займет некоторое время, и если вы исследуете этот результат, это займет еще больше времени. - Насколько велик ваш документ? – laune

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