Gegeben sei folgende Schnittstelle, die Sie in dieser Aufgabe implementieren sollen.
package name.panitz.util.xml; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.w3c.dom.Node; public interface DOMUtil { boolean containsTag(Node n,String tagname); boolean containsTag2(Node n,String tagname); void collectTagnames(Node n, Set<String> result); void collectTagnames2(Node n, Set<String> result); void collectText(Node n,StringBuffer result); void collectText2(Node n,StringBuffer result); long getMaxWIDTHAttributeValue(Node n); long height(Node n); long height2(Node n); default String text(Node n){ StringBuffer result = new StringBuffer(); collectText(n, result); return result.toString(); } default String text2(Node n){ StringBuffer result = new StringBuffer(); collectText2(n, result); return result.toString(); } default Set<String> collectTagnames(Node n){ Set<String> result = ConcurrentHashMap.newKeySet(); collectTagnames(n,result); return result; } default Set<String> collectTagnames2(Node n){ Set<String> result = ConcurrentHashMap.newKeySet(); collectTagnames2(n,result); return result; } }
Zusätzlich sei die Klasse NodelistSpliterator gegeben, die Sie in der letzten Aufgabe implementiert haben.
Implementieren Sie die abstrakten Methoden nach folgender Spezifikation:
long height(Node n)
:es soll die maximale Pfadlänge von der Wurzel bis zu einem Blatt berechnet werden. Ein Dokument, das nur aus einem Knoten besteht, hat dabei die Länge 1.NodelistSpliterator
zum Verarbeiten der Kinder mit der Methode reduce verwenden.n
sollen dem StringBuffer angehängt werden und das in der Dokumentenreihenfolge. Sie dürfen dabei nicht die DOM-Methode getTextContent()
verwenden. collectText
, jetzt sollen Sie aber einen NodelistSpliterator
und die Methode forEach
zum Verarbeiten der Kinder verwenden.containsTag
, nur sollen Sie jetzt einen NodelistSpliterator
zum Verarbeiten der Kinder mit der Methode reduce verwenden.collectTagnames
, jetzt sollen Sie aber einen NodelistSpliterator
und die Methode forEach
zum Verarbeiten der Kinder verwenden.width
Attributen des Dokuments, dessen Wert eine Zahl repräsentiert, soll die größte Zahl > 0 ermittelt werden. existiert kein solches Attribut, so sei das Ergebnis 0.