<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Consider the following ooRexx program that exploits the JRE (the
      Java classes available via the Java runtime environment, installed
      by OpenJDK):</p>
    <blockquote>
      <p>/* purpose: demonstrate how to fetch and list all links with
        jsoup */<br>
        parse arg source     -- command line argument: can be html, xml;
        a local file or URL<br>
        url? = source ~startsWith("http")   -- do we need to parse a
        URL?<br>
        timeout = 10000                     -- timeout: 10 sec (10000
        msec)<br>
        if url? then src=.bsf~new("java.net.URL", source)  -- create URL
        object<br>
                else src=.bsf~new("java.io.File", source)  -- create
        File object<br>
        <br>
        clzJsoup = bsf.importClass("org.jsoup.Jsoup")      -- import
        Jsoup class<br>
        if url? then rootNode = clzJsoup~parse(src, 10000) -- timeout:
        10 second<br>
                else rootNode = clzJsoup~parse(src)<br>
        <br>
        allLinks = rootNode~select("a")  -- get all a-elements<br>
        len=length(allLinks~size)        -- get length of size for
        right-adjusting<br>
        say "there are" pp(allLinks~size) "links"<br>
        do counter c link over allLinks  -- iterate over the collection
        (ArrayList)<br>
           -- say "#" c~right(len)":" pp(link~absURL('href')) "for"
        pp(link~text)<br>
           say "#" c~right(len)":" pp(link~attr('href')) "for"
        pp(link~text)<br>
        end<br>
        <br>
        ::requires "BSF.CLS"             -- get ooRexx-Java bridge<br>
        /* purpose: demonstrate how to fetch and list all links with
        jsoup */<br>
        parse arg source     -- command line argument: can be html, xml;
        a local file or URL<br>
        url? = source ~startsWith("http")   -- do we need to parse a
        URL?<br>
        timeout = 10000                     -- timeout: 10 sec (10000
        msec)<br>
        if url? then src=.bsf~new("java.net.URL", source)  -- create URL
        object<br>
                else src=.bsf~new("java.io.File", source)  -- create
        File object<br>
        <br>
        clzJsoup = bsf.importClass("org.jsoup.Jsoup")      -- import
        Jsoup class<br>
        if url? then rootNode = clzJsoup~parse(src, 10000) -- timeout:
        10 second<br>
                else rootNode = clzJsoup~parse(src)<br>
        <br>
        allLinks = rootNode~select("a")  -- get all a-elements<br>
        len=length(allLinks~size)        -- get length of size for
        right-adjusting<br>
        say "there are" pp(allLinks~size) "links"<br>
        do counter c link over allLinks  -- iterate over the collection
        (ArrayList)<br>
           -- say "#" c~right(len)":" pp(link~absURL('href')) "for"
        pp(link~text)<br>
           say "#" c~right(len)":" pp(link~attr('href')) "for"
        pp(link~text)<br>
        end<br>
        <br>
        ::requires "BSF.CLS"             -- get ooRexx-Java bridge<br>
      </p>
    </blockquote>
    <p>The result of running the above program against
      <a class="moz-txt-link-freetext" href="http://openjdk.net">http://openjdk.net</a><br>
    </p>
    <blockquote>
      <p>E:\WU\Lehrveranstaltungen\Materialien\BP2_AutoJava\254_AutoJava_jsoup_code>rexx
        jsoup_05.rxj <a class="moz-txt-link-freetext" href="http://openjdk.org">http://openjdk.org</a><br>
        there are [132] links<br>
        #   1:
        [<a class="moz-txt-link-freetext" href="https://www.oracle.com/technetwork/java/javase/overview/index.html">https://www.oracle.com/technetwork/java/javase/overview/index.html</a>]
        for [Java Platform, Standard Edition]<br>
        #   2: [projects/jdk/20] for [latest open-source JDK]<br>
        #   3: [<a class="moz-txt-link-freetext" href="https://jdk.java.net/20">https://jdk.java.net/20</a>] for [jdk.java.net/20]<br>
        #   4:
        [<a class="moz-txt-link-freetext" href="https://www.oracle.com/technetwork/java/javase/downloads/index.html">https://www.oracle.com/technetwork/java/javase/downloads/index.html</a>]
        for [here]<br>
        #   5: [projects/amber] for [Amber]<br>
        #   6: [<a class="moz-txt-link-freetext" href="https://wiki.openjdk.org/display/loom/Main">https://wiki.openjdk.org/display/loom/Main</a>] for [Loom]<br>
        #   7: [projects/panama] for [Panama]<br>
        #   8: [<a class="moz-txt-link-freetext" href="https://wiki.openjdk.org/display/valhalla/Main">https://wiki.openjdk.org/display/valhalla/Main</a>] for
        [Valhalla]<br>
        #   9: [projects/jdk/19] for [the next version of Java and the
        JDK]<br>
        #  10: [<a class="moz-txt-link-freetext" href="https://dev.java">https://dev.java</a>] for [dev.java]</p>
      <p>... cut ...</p>
      <p># 119: [/projects/tiered-attrib] for [Tiered Attribution]<br>
        # 120: [/projects/tsan] for [Tsan]<br>
        # 121: [/projects/type-annotations] for [Type Annotations]<br>
        # 122: [/projects/valhalla] for [Valhalla]<br>
        # 123: [/projects/verona] for [Verona]<br>
        # 124: [/projects/visualvm] for [VisualVM]<br>
        # 125: [/projects/wakefield] for [Wakefield]<br>
        # 126: [/projects/zero] for [Zero]<br>
        # 127: [/projects/zgc] for [ZGC]<br>
        # 128: [<a class="moz-txt-link-freetext" href="https://oracle.com">https://oracle.com</a>] for []<br>
        # 129: [/legal/tou/] for [Terms of Use]<br>
        # 130: [/legal/gplv2+ce.html] for [GPLv2]<br>
        # 131: [<a class="moz-txt-link-freetext" href="https://www.oracle.com/us/legal/privacy/">https://www.oracle.com/us/legal/privacy/</a>] for [Privacy]<br>
        # 132: [<a class="moz-txt-link-freetext" href="https://openjdk.org/legal/openjdk-trademark-notice.html">https://openjdk.org/legal/openjdk-trademark-notice.html</a>]
        for [Trademarks]<br>
      </p>
    </blockquote>
    <p>This program runs on all versions of Java/OpenJDK unchanged.</p>
    <p>With your currently intended warning all of a sudden all users of
      such programs/applications get frightened for no good reason!</p>
    <p>---rony</p>
    <p> <br>
    </p>
  </body>
</html>