HTML-Navigation in Java – Java-Beispiele
In diesem Artikel erfahren Sie, wie Sie mit Hilfe der Aspose.HTML for Java API durch ein HTML-Dokument navigieren und eine detaillierte Untersuchung seiner Elemente durchführen können. Sie können ganz einfach Ihre eigene Anwendung erstellen, um Informationen aus HTML-Dokumenten zu analysieren, zu sammeln oder zu extrahieren, da unsere API ein leistungsfähiges Toolset zur Verfügung stellt, um mit CSS Selector, XPath Query oder benutzerdefinierten Filtern im Dokument zu navigieren.
HTML-Navigation
Es gibt viele Möglichkeiten, die HTML-Navigation durchzuführen. Die folgende Liste zeigt den einfachsten Weg, um mit der Klasse Node auf alle DOM-Elemente zuzugreifen:
Property | Description |
---|---|
FirstChild | Accessing this attribute of an element must return a reference to the first child node. |
LastChild | Accessing this attribute of an element must return a reference to the last child node |
NextSibling | Accessing this attribute of an element must return a reference to the sibling node of that element which most immediately follows that element. |
PreviousSibling | Accessing this attribute of an element must return a reference to the sibling node of that element which most immediately precedes that element. |
ChildNodes | Returns a list that contains all children of that element. |
Mit den genannten Eigenschaften können Sie wie folgt durch ein HTML-Dokument navigieren:
1// Prepare HTML code
2String html_code = "<span>Hello,</span> <span>World!</span>";
3
4// Initialize a document from the prepared code
5HTMLDocument document = new HTMLDocument(html_code, ".");
6
7// Get the reference to the first child (first <span>) of the document body
8Element element = document.getBody().getFirstElementChild();
9System.out.println(element.getTextContent());
10// @output: Hello,
11
12// Get the reference to the second <span> element
13element = element.getNextElementSibling();
14System.out.println(element.getTextContent());
15// @output: World!
Für die komplizierteren Szenarien, wenn Sie einen Knoten auf der Grundlage eines bestimmten Musters finden müssen (z. B. die Liste der Kopfzeilen, Links usw.), können Sie ein spezialisiertes TreeWalker oder NodeIterator Objekt mit einer benutzerdefinierten Filter Implementierung verwenden.
Das nächste Beispiel zeigt, wie Sie Ihren eigenen NodeFilter implementieren, um alle Elemente außer Bildern zu überspringen:
1public static class OnlyImageFilter extends NodeFilter {
2 @Override
3 public short acceptNode(Node n) {
4 // The current filter skips all elements, except IMG elements.
5 return "img".equals(n.getLocalName())
6 ? FILTER_ACCEPT
7 : FILTER_SKIP;
8 }
9}
Sobald Sie einen Filter implementiert haben, können Sie die HTML-Navigation wie folgt verwenden:
1// Prepare HTML code
2String code = " < p > Hello, </p >\n" +
3 " <img src = 'image1.png' >\n" +
4 " <img src = 'image2.png' >\n" +
5 " <p > World ! </p >\n";
6
7// Initialize a document based on the prepared code
8HTMLDocument document = new HTMLDocument(code, ".");
9
10// To start HTML navigation, we need to create an instance of TreeWalker
11// The specified parameters mean that it starts walking from the root of the document, iterating all nodes, and using our custom implementation of the filter
12ITreeWalker iterator = document.createTreeWalker(document, NodeFilter.SHOW_ALL, new HtmlNavigationTests.OnlyImageFilter());
13// Use
14while (iterator.nextNode() != null) {
15 // Since we are using our own filter, the current node will always be an instance of the HTMLImageElement
16 // So, we don't need the additional validations here
17 HTMLImageElement image = (HTMLImageElement) iterator.getCurrentNode();
18
19 System.out.println(image.getSrc());
20 // @output: image1.png
21 // @output: image2.png
22}
XPath
Die Alternative zur HTML Navigation ist XML Path Language. Die Syntax der XPath-Ausdrücke ist recht einfach und, was noch wichtiger ist, sie ist leicht zu lesen und zu unterstützen.
Das folgende Beispiel zeigt, wie XPath-Abfragen innerhalb der Aspose.HTML for Java API verwendet werden können:
1// Prepare HTML code
2String code = "< div class='happy' >\n" +
3 " <div >\n" +
4 " <span > Hello! </span >\n" +
5 " </div >\n" +
6 " </div >\n" +
7 " <p class='happy' >\n" +
8 " <span > World! </span >\n" +
9 " </p >\n";
10
11// Initialize a document based on the prepared code
12HTMLDocument document = new HTMLDocument(code, ".");
13
14// Here, we evaluate the XPath expression where we select all child <span> elements from elements whose 'class' attribute equals to 'happy'
15IXPathResult result = document.evaluate("//*[@class='happy']//span",
16 document,
17 null,
18 XPathResultType.Any,
19 null
20);
21
22// Iterate over the resulted nodes
23for (Node node; (node = result.iterateNext()) != null; ) {
24 System.out.println(node.getTextContent());
25 // @output: Hello!
26 // @output: World!
27}
CSS-Selektor
Neben HTML Navigation und XPath können Sie auch die CSS Selector API verwenden, die ebenfalls von unserer Bibliothek unterstützt wird. Diese API wurde entwickelt, um ein Suchmuster zu erstellen, um Elemente in einem Dokumentbaum basierend auf der CSS Selectors Syntax zu finden.
1// Prepare HTML code
2String code = "< div class='happy' >\n" +
3 " <div >\n" +
4 " <span > Hello, </span >\n" +
5 " </div >\n" +
6 " </div >\n" +
7 " <p class='happy' >\n" +
8 " <span > World ! </span >\n" +
9 " </p >\n";
10
11// Initialize a document based on the prepared code
12HTMLDocument document = new HTMLDocument(code, ".");
13
14// Here, we create a CSS Selector that extracts all elements whose 'class' attribute equals to 'happy' and their child SPAN elements
15NodeList elements = document.querySelectorAll(".happy span");
16
17// Iterate over the resulted list of elements
18elements.forEach(element -> {
19 System.out.println(((HTMLElement) element).getInnerHTML());
20 // @output: Hello,
21 // @output: World!
22});
Aspose.HTML bietet KI-Keyword-Extraktor, ein KI-gestütztes Tool zum Extrahieren von Schlüsselwörtern aus Webseiten, einfachem Text oder Dateien. Mit dieser Anwendung können Sie schnell wichtige Themen und Trends für die Optimierung von Websites, die Analyse von Wettbewerbern oder die Zusammenfassung großer Dokumente identifizieren. Fügen Sie einfach den Text oder die URL ein, wählen Sie die Einstellungen aus, und klicken Sie auf “Extrahieren”, um in Sekundenschnelle genaue, aussagekräftige Schlüsselwörter zu erhalten. Ideal für die Verbesserung der Sichtbarkeit in Suchmaschinen, die Ausrichtung von Inhalten und die datengestützte Entscheidungsfindung.