ElementIterator
ElementIterator (요소 반복자)
이름 그대로 Element 트리를 반복(iterate)하는 클래스입니다. 생성자는 Document 또는 Element를 인자로 받을 수 있습니다.
본문
Document를 인자로 받으면 반복의 루트는 document.getDefaultRootElement()의 반환 값입니다. 반복은 깊이 우선(depth-first) 방식으로 일어납니다. 경계 조건은 다음과 같이 처리됩니다.
first()나current()이전에next()를 호출하면 루트가 반환됩니다.next()는 목록의 끝을 나타내도록 null을 반환합니다.previous()는 현재 요소가 루트이거나next()가 null을 반환했을 때 null을 반환합니다.
ElementIterator는 Element 트리에 대한 잠금(locking)을 하지 않아 변경을 추적하지 않습니다. 요소 반복 중 변경이 일어나지 않도록 보장하는 것은 이 클래스 사용자의 책임입니다. 간단한 사용 예시는 다음과 같습니다.
public void iterate() {
ElementIterator it = new ElementIterator(root);
Element elem;
while (true) {
if ((elem = it.next()) != null) {
// process element
System.out.println("elem: " + elem.getName());
} else {
break;
}
}
}
주요 메서드·상세 (Methods & details)
주요 메서드는 이전 요소로 이동하는 previous(), 현재 요소를 얻는 current(), 다음 요소로 이동하는 next(), 반복을 루트로 되감는 first()입니다. replace(Element)로 반복 대상을 바꿀 수도 있습니다. 깊이 우선 순회를 수행합니다.