Example usage for org.jsoup.nodes Element attr

List of usage examples for org.jsoup.nodes Element attr

Introduction

In this page you can find the example usage for org.jsoup.nodes Element attr.

Prototype

public Element attr(String attributeKey, boolean attributeValue) 

Source Link

Document

Set a boolean attribute value on this element.

Usage

From source file:com.astamuse.asta4d.web.form.field.impl.AbstractRadioAndCheckboxPrepareRenderer.java

@Override
public Renderer preRender(final String editSelector, final String displaySelector) {

    if (duplicateSelector != null && labelWrapperIndicatorAttr != null) {
        String msg = "duplicateSelector (%s) and labelWrapperIndicatorAttr (%s) cannot be specified at same time.";
        throw new IllegalArgumentException(String.format(msg, duplicateSelector, labelWrapperIndicatorAttr));
    }/*  www .  j ava 2  s.co  m*/

    Renderer renderer = super.preRender(editSelector, displaySelector);

    renderer.disableMissingSelectorWarning();

    // create wrapper for input element
    final WrapperIdHolder wrapperIdHolder = new WrapperIdHolder();

    if (duplicateSelector == null && optionMap != null) {

        renderer.add(new Renderer(editSelector, new ElementTransformer(null) {
            @Override
            public Element invoke(Element elem) {

                if (wrapperIdHolder.wrapperId != null) {
                    throw new RuntimeException("The target of selector[" + editSelector
                            + "] must be unique but over than 1 target was found."
                            + "Perhaps you have specified an option value map on a group of elements "
                            + "which is intented to be treated as predefined static options by html directly.");
                }

                String id = elem.id();
                if (StringUtils.isEmpty(id)) {
                    String msg = "A %s input element must have id value being configured:%s";
                    throw new RuntimeException(String.format(msg, getTypeString(), elem.outerHtml()));
                }

                GroupNode wrapper = new GroupNode();

                // cheating the rendering engine for not skipping the rendering on group node
                wrapper.attr(ExtNodeConstants.GROUP_NODE_ATTR_TYPE,
                        ExtNodeConstants.GROUP_NODE_ATTR_TYPE_USERDEFINE);

                // put the input element under the wrapper node
                wrapper.appendChild(elem.clone());

                String wrapperId = IdGenerator.createId();
                wrapper.attr("id", wrapperId);

                wrapperIdHolder.inputId = id;
                wrapperIdHolder.wrapperId = wrapperId;

                // record the selector for against label
                if (labelWrapperIndicatorAttr == null) {
                    wrapperIdHolder.labelSelector = SelectorUtil.attr("label", "for", wrapperIdHolder.inputId);
                } else {
                    wrapperIdHolder.labelSelector = SelectorUtil.attr(labelWrapperIndicatorAttr,
                            wrapperIdHolder.inputId);
                }

                return wrapper;
            }
        }));

        renderer.add(":root", new Renderable() {
            @Override
            public Renderer render() {
                if (wrapperIdHolder.wrapperId == null) {
                    // for display mode?
                    return Renderer.create();
                }

                // remove the label element and cache it in warpperIdHolder, we will relocate it later(since we have to duplicate the
                // input
                // and label pair by given option value map, we have to make sure that the input and label elements are in same parent
                // node
                // which can be duplicated)
                Renderer renderer = Renderer.create().disableMissingSelectorWarning();
                renderer.add(new Renderer(wrapperIdHolder.labelSelector, new ElementTransformer(null) {
                    @Override
                    public Element invoke(Element elem) {
                        wrapperIdHolder.relocatingLabels.add(elem.clone());
                        return new GroupNode();
                    }

                }));

                return renderer.enableMissingSelectorWarning();
            }
        });

        renderer.add(":root", new Renderable() {
            @Override
            public Renderer render() {

                if (wrapperIdHolder.wrapperId == null) {
                    // for display mode?
                    return Renderer.create();
                }

                String selector = SelectorUtil.id(wrapperIdHolder.wrapperId);

                // relocate the label element to the wrapper node
                return Renderer.create(selector, new ElementSetter() {
                    @Override
                    public void set(Element elem) {
                        if (wrapperIdHolder.relocatingLabels.isEmpty()) {// no existing label found
                            Element label = new Element(Tag.valueOf("label"), "");
                            label.attr("for", wrapperIdHolder.inputId);
                            elem.appendChild(label);
                        } else {
                            for (Element label : wrapperIdHolder.relocatingLabels) {
                                elem.appendChild(label);
                            }
                        }
                    }
                });

            }
        });

    } else {
        if (duplicateSelector != null && optionMap != null) {
            // if duplicateSelector is specified, we just only need to store the input element id
            renderer.add(editSelector, new ElementSetter() {
                @Override
                public void set(Element elem) {
                    if (wrapperIdHolder.inputId != null) {
                        String msg = "The target of selector[%s] (inside duplicator:%s) must be unique but over than 1 target was found.";
                        throw new RuntimeException(String.format(msg, editSelector, duplicateSelector));
                    }
                    String id = elem.id();
                    if (StringUtils.isEmpty(id)) {
                        String msg = "A %s input element (inside duplicator:%s) must have id value being configured:%s";
                        throw new RuntimeException(
                                String.format(msg, getTypeString(), duplicateSelector, elem.outerHtml()));
                    }
                    wrapperIdHolder.inputId = id;

                    // record the selector for against label
                    // labelWrapperIndicatorAttr would not be null since we checked it at the entry of this method.
                    wrapperIdHolder.labelSelector = SelectorUtil.attr("label", "for", wrapperIdHolder.inputId);
                }
            });
        }
    }

    // here we finished restructure the input element and its related label element and then we begin to manufacture all the input/label
    // pairs for option list

    renderer.add(":root", new Renderable() {
        @Override
        public Renderer render() {

            if (optionMap == null) {
                // for static options
                Renderer renderer = Renderer.create();
                final List<String> inputIdList = new LinkedList<>();
                renderer.add(editSelector, new ElementSetter() {
                    @Override
                    public void set(Element elem) {
                        inputIdList.add(elem.id());
                    }
                });
                renderer.add(":root", new Renderable() {
                    @Override
                    public Renderer render() {
                        Renderer render = Renderer.create().disableMissingSelectorWarning();
                        for (String id : inputIdList) {
                            render.add(SelectorUtil.attr(labelWrapperIndicatorAttr, id), LABEL_REF_ATTR, id);
                            render.add(SelectorUtil.attr("label", "for", id), LABEL_REF_ATTR, id);
                        }
                        return render.enableMissingSelectorWarning();
                    }
                });

                if (duplicateSelector != null) {
                    renderer.add(duplicateSelector, new Renderable() {
                        @Override
                        public Renderer render() {
                            String duplicatorRef = IdGenerator.createId();
                            Renderer render = Renderer.create(":root", DUPLICATOR_REF_ID_ATTR, duplicatorRef);
                            render.add("input", DUPLICATOR_REF_ATTR, duplicatorRef);
                            String labelSelector;
                            if (labelWrapperIndicatorAttr == null) {
                                labelSelector = SelectorUtil.tag("label");
                            } else {
                                labelSelector = SelectorUtil.attr(labelWrapperIndicatorAttr);
                            }
                            render.add(labelSelector, DUPLICATOR_REF_ATTR, duplicatorRef);
                            return render;
                        }
                    });
                }
                return renderer;
            } else {
                if (wrapperIdHolder.wrapperId == null && duplicateSelector == null) {
                    // for display mode?
                    return Renderer.create();
                }
                if (wrapperIdHolder.inputId == null) {
                    // target input element not found
                    return Renderer.create();
                }
                String selector = duplicateSelector == null ? SelectorUtil.id(wrapperIdHolder.wrapperId)
                        : duplicateSelector;
                return Renderer.create(selector, optionMap.getOptionList(), row -> {

                    Renderer renderer = Renderer.create().disableMissingSelectorWarning();

                    String inputSelector = SelectorUtil.id("input", wrapperIdHolder.inputId);
                    renderer.add(inputSelector, "value", row.getValue());

                    // we have to generate a new uuid for the input element to make sure its id is unique even we duplicated it.
                    String newInputId = inputIdByValue ? row.getValue() : IdGenerator.createId();

                    // make the generated id more understandable by prefixing with original id
                    newInputId = wrapperIdHolder.inputId + "-" + newInputId;

                    String duplicatorRef = null;

                    if (duplicateSelector != null) {
                        duplicatorRef = IdGenerator.createId();
                    }

                    renderer.add(":root", DUPLICATOR_REF_ID_ATTR, duplicatorRef);

                    renderer.add(inputSelector, DUPLICATOR_REF_ATTR, duplicatorRef);
                    renderer.add(inputSelector, "id", newInputId);

                    // may be a wrapper container of label
                    renderer.add(wrapperIdHolder.labelSelector, LABEL_REF_ATTR, newInputId);
                    if (labelWrapperIndicatorAttr != null) {
                        renderer.add(wrapperIdHolder.labelSelector, labelWrapperIndicatorAttr, newInputId);
                    }
                    renderer.add(wrapperIdHolder.labelSelector, DUPLICATOR_REF_ATTR, duplicatorRef);

                    renderer.add("label", "for", newInputId);
                    renderer.add("label", row.getDisplayText());

                    return renderer.enableMissingSelectorWarning();
                });
            }
        }
    });

    // since we cheated the rendering engine, we should set the type of group node created to faked for fast clean up
    renderer.add(":root", new Renderable() {
        @Override
        public Renderer render() {
            if (wrapperIdHolder.wrapperId == null) {
                // for display mode?
                return Renderer.create();
            }
            String selector = SelectorUtil.id(wrapperIdHolder.wrapperId);
            return Renderer.create(selector, new ElementSetter() {
                @Override
                public void set(Element elem) {
                    elem.attr(ExtNodeConstants.GROUP_NODE_ATTR_TYPE,
                            ExtNodeConstants.GROUP_NODE_ATTR_TYPE_FAKE);
                }
            });
        }
    });

    PrepareRenderingDataUtil.storeDataToContextBySelector(editSelector, displaySelector, optionMap);

    return renderer.enableMissingSelectorWarning();
}

From source file:com.aquest.emailmarketing.web.controllers.BroadcastController.java

/**
 * Define content./*w ww  . j  a  va 2s  . c  om*/
 *
 * @param model the model
 * @param broadcast1 the broadcast1
 * @param result the result
 * @param principal the principal
 * @return the string
 * @throws IOException 
 */
@RequestMapping(value = "/defineContent", method = RequestMethod.POST)
public String defineContent(Model model, @Valid @ModelAttribute("broadcast") Broadcast broadcast1,
        @RequestParam(value = "fromUrl", required = false) String fromUrl,
        @RequestParam(value = "optimize", required = false) boolean optimize,
        @RequestParam(value = "baseurl", required = false) String baseUrl,
        @RequestParam(value = "rel2abs", required = false) boolean rel2abs, BindingResult result,
        Principal principal) throws IOException {
    String htmlBodyPrep = "";
    Broadcast broadcast = broadcastService.getBroadcastById(broadcast1.getId());
    broadcast.setSubject(broadcast1.getSubject());
    if (fromUrl != "") {
        Document doc = Jsoup.connect(fromUrl).get();
        htmlBodyPrep = doc.outerHtml();
        broadcast.setHtmlbody(htmlBodyPrep);
        System.out.println(htmlBodyPrep);
    }
    if (broadcast1.getHtmlbody() != null) {
        htmlBodyPrep = broadcast1.getHtmlbody();
        broadcast.setHtmlbody(htmlBodyPrep);
        System.out.println("Da vidimo: " + htmlBodyPrep);
    }
    if (rel2abs == true) {
        if (baseUrl != null) {
            System.out.println(baseUrl);
            Document doc = Jsoup.parse(broadcast.getHtmlbody(), baseUrl);
            System.out.println(doc.toString());

            Elements images = doc.select("img");
            for (Element e : images) {
                e.attr("src", e.absUrl("src"));
                System.out.println(e.absUrl("src"));
            }
            broadcast.setHtmlbody(doc.outerHtml());
            htmlBodyPrep = doc.outerHtml();
        } else {
            // ovde staviti error handling
        }
    }
    if (optimize == true) {
        //          /* PREMAILER API OPTIONS
        //           * line_length - Line length used by to_plain_text. Boolean, default is 65.
        //             warn_level - What level of CSS compatibility warnings to show (see Warnings).
        //                NONE = 0
        //                SAFE = 1
        //                POOR = 2
        //                RISKY = 3
        //             link_query_string - A string to append to every a href="" link. Do not include the initial ?.
        //             base_url - Used to calculate absolute URLs for local files.
        //             css - Manually specify CSS stylesheets.
        //             css_to_attributes - Copy related CSS attributes into HTML attributes (e.g. background-color to bgcolor)
        //             css_string - Pass CSS as a string
        //             remove_ids - Remove ID attributes whenever possible and convert IDs used as anchors to hashed to avoid collisions in webmail programs. Default is false.
        //             remove_classes - Remove class attributes. Default is false.
        //             remove_comments -  Remove html comments. Default is false.
        //             preserve_styles - Whether to preserve any link rel=stylesheet and style elements. Default is false.
        //             preserve_reset - Whether to preserve styles associated with the MailChimp reset code
        //             with_html_string -  Whether the html param should be treated as a raw string.
        //             verbose - Whether to print errors and warnings to $stderr. Default is false.
        //             adapter - Which HTML parser to use, either :nokogiri or :hpricot. Default is :hpricot.
        //          */
        Premailer premailer = new Premailer();
        PremailerInterface premailerInterface = premailer.getPremailerInstance();

        Map<String, Object> options = new HashMap<String, Object>();
        options.put("with_html_string", true);
        options.put("base_url", fromUrl);
        premailerInterface.init(broadcast.getHtmlbody(), options);
        //premailerInterface.init(htmlBodyPrep, options);
        broadcast.setHtmlbody(premailerInterface.inline_css());
        System.out.println(premailerInterface.inline_css());
        premailer.destroyInstance();
    }
    broadcast.setPlaintext(broadcast1.getPlaintext());
    broadcastService.SaveOrUpdate(broadcast);
    // Find URLs in html body and add tracking code
    Urls urls = new Urls();
    String html = broadcast.getHtmlbody();
    //HashSet to avoid duplicates
    Set<String> urlList = new HashSet<String>();
    Document doc = Jsoup.parse(html);
    Elements links = doc.select("a[href]");
    for (Element link : links) {
        if (link.attr("abs:href").length() > 5) {
            urlList.add(link.attr("abs:href"));
        }
    }
    model.addAttribute("urlList", urlList);
    model.addAttribute("urls", urls);

    // Google Analytics - utmCampaign List
    List<String> utmCampaignList = new ArrayList<String>();
    utmCampaignList.add("[BROADAST_NAME]");
    model.addAttribute("utmCampaignList", utmCampaignList);

    // Google Analytics - utmSource List
    List<String> utmSourceList = new ArrayList<String>();
    utmSourceList.add("[CAMPAIGN_NAME]");
    model.addAttribute("utmSourceList", utmSourceList);

    // Google Analytics - utmContent List
    List<String> utmContentList = new ArrayList<String>();
    utmContentList.add("[EMAIL]");
    //TODO: add all variables from CM_EMAIL_BROADCAST_LIST
    model.addAttribute("utmContentList", utmContentList);

    model.addAttribute("broadcast", broadcast);
    return "tracking";
}

From source file:dk.dma.msinm.service.MessageService.java

/**
 * Make sure that links are absolute.//from w  w w.  ja  va2 s . co m
 * @param doc the HTML document
 */
protected void externalizeLinks(Document doc, String tag, String attr) {
    Elements elms = doc.select(tag + "[" + attr + "]");
    for (Element e : elms) {

        String url = e.absUrl(attr);
        if (url.length() == 0) {
            // Disable link
            e.attr(attr, "#");
            continue;
        }
        // Update the link to be the absolute link
        e.attr(attr, url);
    }
}

From source file:de.geeksfactory.opacclient.apis.Open.java

@Override
public SearchRequestResult search(List<SearchQuery> queries)
        throws IOException, OpacErrorException, JSONException {
    String url = opac_url + "/" + data.getJSONObject("urls").getString("advanced_search") + NO_MOBILE;
    Document doc = Jsoup.parse(httpGet(url, getDefaultEncoding()));
    doc.setBaseUri(url);/*ww  w  . j  ava  2  s  .  c  om*/

    int selectableCount = 0;
    for (SearchQuery query : queries) {
        if (query.getValue().equals("") || query.getValue().equals("false"))
            continue;

        if (query.getSearchField() instanceof TextSearchField) {
            TextSearchField field = (TextSearchField) query.getSearchField();
            if (field.getData().getBoolean("selectable")) {
                selectableCount++;
                if (selectableCount > 3) {
                    throw new OpacErrorException(
                            stringProvider.getQuantityString(StringProvider.LIMITED_NUM_OF_CRITERIA, 3, 3));
                }
                String number = numberToText(selectableCount);
                Element searchField = doc.select("select[name$=" + number + "SearchField]").first();
                Element searchValue = doc.select("input[name$=" + number + "SearchValue]").first();
                searchField.val(field.getId());
                searchValue.val(query.getValue());
            } else {
                Element input = doc.select("input[name=" + field.getId() + "]").first();
                input.val(query.getValue());
            }
        } else if (query.getSearchField() instanceof DropdownSearchField) {
            DropdownSearchField field = (DropdownSearchField) query.getSearchField();
            Element input = doc.select("select[name=" + field.getId() + "]").first();
            input.val(query.getValue());
        } else if (query.getSearchField() instanceof CheckboxSearchField) {
            CheckboxSearchField field = (CheckboxSearchField) query.getSearchField();
            Element input = doc.select("input[name=" + field.getId() + "]").first();
            input.attr("checked", query.getValue());
        }
    }

    // Submit form
    FormElement form = (FormElement) doc.select("form").first();
    HttpEntity data = formData(form, "BtnSearch").build();
    String postUrl = form.attr("abs:action");

    String html = httpPost(postUrl, data, "UTF-8");
    Document doc2 = Jsoup.parse(html);
    doc2.setBaseUri(postUrl);
    return parse_search(doc2, 0);
}

From source file:org.apache.archiva.web.docs.RestDocsServlet.java

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    logger.debug("docs request to path: {}", req.getPathInfo());

    String path = StringUtils.removeStart(req.getPathInfo(), "/");
    InputStream is = Thread.currentThread().getContextClassLoader().getResourceAsStream(path);

    if (StringUtils.endsWith(path, ".xsd")) {
        StringEscapeUtils.escapeXml(resp.getWriter(), IOUtils.toString(is));
        //IOUtils.copy( is, resp.getOutputStream() );
        return;/*from   ww  w .  j a va  2 s .  c  o m*/
    }

    String startPath = StringUtils.substringBefore(path, "/");

    // replace all links !!
    Document document = Jsoup.parse(is, "UTF-8", "");

    Element body = document.body().child(0);

    Elements links = body.select("a[href]");

    for (Element link : links) {
        link.attr("href", "#" + startPath + "/" + link.attr("href"));
    }

    Elements datalinks = body.select("[data-href]");

    for (Element link : datalinks) {
        link.attr("data-href", "#" + startPath + "/" + link.attr("data-href"));
    }

    Elements codes = body.select("code");

    for (Element code : codes) {
        code.attr("class", code.attr("class") + " nice-code");
    }

    //default generated enunciate use h1/h2/h3 which is quite big so transform to h3/h4/h5

    Elements headers = body.select("h1");

    for (Element header : headers) {
        header.tagName("h3");
    }

    headers = body.select("h2");

    for (Element header : headers) {
        header.tagName("h4");
    }

    headers = body.select("h3");

    for (Element header : headers) {
        header.tagName("h5");
    }

    Document res = new Document("");
    res.appendChild(body.select("div[id=main]").first());

    Elements scripts = body.select("script");
    for (Element script : scripts) {
        res.appendChild(script);
    }
    resp.getOutputStream().write(res.outerHtml().getBytes());

}

From source file:org.asqatasun.rules.doc.utils.rga33.extractor.Rgaa3Extractor.java

private static void createTestcaseFiles() throws IOException {
    File srcDir = new File(RGAA3_TESTCASE_PATH);
    for (File file : srcDir.listFiles()) {
        String fileName = file.getName().replace("Rgaa30Rule", "").replace(".java", "");
        String theme = fileName.substring(0, 2);
        String crit = fileName.substring(2, 4);
        String test = fileName.substring(4, 6);
        String testKey = Integer.valueOf(theme).toString() + "-" + Integer.valueOf(crit).toString() + "-"
                + Integer.valueOf(test).toString();
        String wrongKey = theme + "." + crit + "." + test;
        for (File testcase : file.listFiles()) {
            if (testcase.isFile() && testcase.getName().contains("html")) {
                Document doc = Jsoup.parse(FileUtils.readFileToString(testcase));
                Element detail = doc.select(".test-detail").first();
                if (detail == null) {
                    System.out.println(doc.outerHtml());
                } else {
                    detail.tagName("div");
                    detail.text("");
                    for (Element el : detail.children()) {
                        el.remove();//w  w w .  j  a  va 2s.  co  m
                    }
                    if (!detail.hasAttr("lang")) {
                        detail.attr("lang", "fr");
                    }
                    detail.append("\n" + RGAA3.get(testKey).ruleRawHtml + "\n");
                    doc.outputSettings().escapeMode(Entities.EscapeMode.xhtml);
                    doc.outputSettings().outline(false);
                    doc.outputSettings().indentAmount(4);
                    String outputHtml = doc.outerHtml();
                    if (outputHtml.contains(wrongKey)) {
                        outputHtml = outputHtml.replaceAll(wrongKey, RGAA3.get(testKey).getRuleDot());
                    }
                    FileUtils.writeStringToFile(testcase, outputHtml);
                }
            }
        }
    }
}

From source file:org.craftercms.social.migration.controllers.MainController.java

protected void getHtml(final FileWriter writer) throws TransformerException, IOException {
    final URL in = getClass().getResource(
            MigrationTool.systemProperties.getString("crafter" + ".migration" + "" + ".loggerTemplate"));
    if (in == null) {
        log.error("Unable to find {} "
                + MigrationTool.systemProperties.getString("crafter" + ".migration" + "" + ".loggerTemplate"));
    }/* w  w w.j a v a2 s  .c om*/
    final Document loggingDoc = Jsoup.parse(IOUtils.toString(in));
    final Element logs = loggingDoc.getElementById("logs");
    for (Object o : logTable.getItems()) {
        if (o instanceof UserLogEntry) {
            UserLogEntry userLogEntry = (UserLogEntry) o;
            String dateFormat = new SimpleDateFormat("yyyy MM dd hh:mm:ss zzz").format(userLogEntry.getDate());
            final Element tr = loggingDoc.createElement("tr");
            tr.attr("class", userLogEntry.getLevel().getCssClass());
            final Element tmigrator = loggingDoc.createElement("td");
            final Element tdate = loggingDoc.createElement("td");
            final Element tmessage = loggingDoc.createElement("td");
            tmessage.attr("class", "text-center");
            tmessage.text(userLogEntry.getMessage());
            tdate.text(dateFormat);
            tmigrator.text(userLogEntry.getSource());
            tr.appendChild(tmigrator);
            tr.appendChild(tdate);
            tr.appendChild(tmessage);
            logs.appendChild(tr);
        }
    }
    IOUtils.write(loggingDoc.toString(), writer);
    //        Transformer transformer = TransformerFactory.newInstance().newTransformer();
    //        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no");
    //        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
    //        transformer.setOutputProperty(OutputKeys.INDENT, "yes");
    //        transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
    //        transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4");
    //        transformer.transform(new DOMSource(loggingDoc), new StreamResult(writer));
    writer.flush();
    writer.close();
}

From source file:org.jboss.tools.windup.ui.internal.issues.IssueDetailsView.java

public static void addPrism(Document doc) {
    try {/*from   ww  w .j  a  v  a2  s .  c  o  m*/
        Bundle bundle = WindupUIPlugin.getDefault().getBundle();
        Elements codeElements = doc.getElementsByTag("code");
        codeElements.forEach(element -> {
            Set<String> classNames = element.classNames();
            Set<String> newNames = Sets.newHashSet();
            classNames.forEach(className -> {
                // prismjs requires prefix, i'm not sure about another/easier workaround.
                newNames.add("language-" + className);
            });
            element.classNames(newNames);
        });

        DocumentType type = new DocumentType("html", "", "", "");
        doc.insertChildren(0, Lists.newArrayList(type));

        Element head = doc.head();
        Element css = doc.createElement("link");

        URL fileURL = FileLocator.find(bundle, new Path("html/prism.css"), null);
        String srcPath = FileLocator.resolve(fileURL).getPath();

        css.attr("href", srcPath);
        css.attr("rel", "stylesheet");
        head.appendChild(css);

        Element body = doc.body();
        Element script = doc.createElement("script");

        fileURL = FileLocator.find(bundle, new Path("html/prism.js"), null);
        srcPath = FileLocator.resolve(fileURL).getPath();

        script.attr("src", srcPath);
        body.appendChild(script);
    } catch (Exception e) {
        WindupUIPlugin.log(e);
    }
}

From source file:org.keionline.keionline.ArticleView.java

private String getContent(String url) throws IOException {
    Document doc = Jsoup.connect(url).userAgent("Mozilla").get();
    Element data = doc.getElementsByClass("node").first();// get the third content div,
    Elements select = data.select("img");
    // Change the links to absolute!! so that images work
    for (Element e : select) {
        e.attr("src", e.absUrl("src"));
    }//from  w ww.j  a  v a2 s. c  o  m
    select = data.select("a");
    for (Element e : select) {
        e.attr("href", e.absUrl("href"));
    }
    Element info = data.getElementsByClass("submitted").first();
    info.after("<hr>");
    String cont = data.toString();
    cont = CSS + cont + "</body>";
    content = cont;
    return cont;
}