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:

PropertyDescription
FirstChildAccessing this attribute of an element must return a reference to the first child node.
LastChildAccessing this attribute of an element must return a reference to the last child node
NextSiblingAccessing this attribute of an element must return a reference to the sibling node of that element which most immediately follows that element.
PreviousSiblingAccessing this attribute of an element must return a reference to the sibling node of that element which most immediately precedes that element.
ChildNodesReturns a list that contains all children of that element.

Mit den genannten Eigenschaften können Sie wie folgt durch ein HTML-Dokument navigieren:

 1// Navigate the HTML DOM using Java
 2
 3// Prepare HTML code
 4String html_code = "<span>Hello,</span> <span>World!</span>";
 5
 6// Initialize a document from the prepared code
 7HTMLDocument document = new HTMLDocument(html_code, ".");
 8
 9// Get the reference to the first child (first <span>) of the document body
10Element element = document.getBody().getFirstElementChild();
11System.out.println(element.getTextContent());
12// @output: Hello,
13
14// Get the reference to the second <span> element
15element = element.getNextElementSibling();
16System.out.println(element.getTextContent());
17// @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:

 1// Create custom NodeFilter to accept only image elements in Java
 2
 3public static class OnlyImageFilter extends NodeFilter {
 4    @Override
 5    public short acceptNode(Node n) {
 6        // The current filter skips all elements, except IMG elements
 7        return "img".equals(n.getLocalName())
 8                ? FILTER_ACCEPT
 9                : FILTER_SKIP;
10    }
11}

Sobald Sie einen Filter implementiert haben, können Sie die HTML-Navigation wie folgt verwenden:

 1// Filter HTML elements using TreeWalker and custom NodeFilter in Aspose.HTML for Java
 2
 3// Prepare HTML code
 4String code = "    < p > Hello, </p >\n" +
 5        "    <img src = 'image1.png' >\n" +
 6        "    <img src = 'image2.png' >\n" +
 7        "    <p > World ! </p >\n";
 8
 9// Initialize a document based on the prepared code
10HTMLDocument document = new HTMLDocument(code, ".");
11
12// To start HTML navigation, we need to create an instance of TreeWalker
13// 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
14ITreeWalker iterator = document.createTreeWalker(document, NodeFilter.SHOW_ALL, new NodeFilterUsageExample.OnlyImageFilter());
15// Use
16while (iterator.nextNode() != null) {
17    // Since we are using our own filter, the current node will always be an instance of the HTMLImageElement
18    // So, we don't need the additional validations here
19    HTMLImageElement image = (HTMLImageElement) iterator.getCurrentNode();
20
21    System.out.println(image.getSrc());
22    // @output: image1.png
23    // @output: image2.png
24}

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// Select HTML elements using XPath expression in Aspose.HTML for Java
 2
 3// Prepare HTML code
 4String code = "< div class='happy' >\n" +
 5        "        <div >\n" +
 6        "            <span > Hello! </span >\n" +
 7        "        </div >\n" +
 8        "    </div >\n" +
 9        "    <p class='happy' >\n" +
10        "        <span > World! </span >\n" +
11        "    </p >\n";
12
13// Initialize a document based on the prepared code
14HTMLDocument document = new HTMLDocument(code, ".");
15
16// Here, we evaluate the XPath expression where we select all child <span> elements from elements whose 'class' attribute equals to 'happy'
17IXPathResult result = document.evaluate("//*[@class='happy']//span",
18        document,
19        null,
20        XPathResultType.Any,
21        null
22);
23
24// Iterate over the resulted nodes
25for (Node node; (node = result.iterateNext()) != null; ) {
26    System.out.println(node.getTextContent());
27    // @output: Hello!
28    // @output: World!
29}

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// Select HTML elements using CSS selector querySelectorAll method in Aspose.HTML for Java
 2
 3// Prepare HTML code
 4String code = "< div class='happy' >\n" +
 5        "        <div >\n" +
 6        "            <span > Hello, </span >\n" +
 7        "        </div >\n" +
 8        "    </div >\n" +
 9        "    <p class='happy' >\n" +
10        "        <span > World ! </span >\n" +
11        "    </p >\n";
12
13// Initialize a document based on the prepared code
14HTMLDocument document = new HTMLDocument(code, ".");
15
16// Here, we create a CSS Selector that extracts all elements whose 'class' attribute equals to 'happy' and their child SPAN elements
17NodeList elements = document.querySelectorAll(".happy span");
18
19// Iterate over the resulted list of elements
20elements.forEach(element -> {
21    System.out.println(((HTMLElement) element).getInnerHTML());
22    // @output: Hello,
23    // @output: World!
24});

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.

Text “KI-Keyword-Extraktor”

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.