/** Create a new DataNode from HTML encoded data. @param encodedData encoded data @param baseUri bass URI @return new DataNode */ public static DataNode createFromEncoded(String encodedData, String baseUri) { String data = Entities.unescape(encodedData); return new DataNode(data); } }
void insert(Token.Character characterToken) { Node node; // characters in script and style go in as datanodes, not text nodes final String tagName = currentElement().tagName(); final String data = characterToken.getData(); if (characterToken.isCData()) node = new CDataNode(data); else if (tagName.equals("script") || tagName.equals("style")) node = new DataNode(data); else node = new TextNode(data); currentElement().appendChild(node); // doesn't use insertNode, because we don't foster these; and will always have a stack. }
public void head(Node source, int depth) { if (source instanceof Element) { Element sourceEl = (Element) source; if (whitelist.isSafeTag(sourceEl.tagName())) { // safe, clone and copy safe attrs ElementMeta meta = createSafeElement(sourceEl); Element destChild = meta.el; destination.appendChild(destChild); numDiscarded += meta.numAttribsDiscarded; destination = destChild; } else if (source != root) { // not a safe tag, so don't add. don't count root against discarded. numDiscarded++; } } else if (source instanceof TextNode) { TextNode sourceText = (TextNode) source; TextNode destText = new TextNode(sourceText.getWholeText()); destination.appendChild(destText); } else if (source instanceof DataNode && whitelist.isSafeTag(source.parent().nodeName())) { DataNode sourceData = (DataNode) source; DataNode destData = new DataNode(sourceData.getWholeData()); destination.appendChild(destData); } else { // else, we don't care about comments, xml proc instructions, etc numDiscarded++; } }
public void head(Node source, int depth) { if (elementToSkip != null) { return; } if (source instanceof Element) { Element sourceElement = (Element) source; if (isSafeTag(sourceElement)) { String sourceTag = sourceElement.tagName(); Attributes destinationAttributes = sourceElement.attributes().clone(); Element destinationChild = new Element(Tag.valueOf(sourceTag), sourceElement.baseUri(), destinationAttributes); destination.appendChild(destinationChild); destination = destinationChild; } else if (source != root) { elementToSkip = sourceElement; } } else if (source instanceof TextNode) { TextNode sourceText = (TextNode) source; TextNode destinationText = new TextNode(sourceText.getWholeText(), source.baseUri()); destination.appendChild(destinationText); } else if (source instanceof DataNode && isSafeTag(source.parent())) { DataNode sourceData = (DataNode) source; DataNode destinationData = new DataNode(sourceData.getWholeData(), source.baseUri()); destination.appendChild(destinationData); } }
new DataNode(builder.toString(), mainScriptTag.baseUri())); fragmentNodes.add(mainScriptTag);
DataNode json = new DataNode("var x = { \"foo\" : \"bar\" }", "http://domain.tld/path"); script.appendChild(json);
private static Element createInlineJavaScriptElement( String javaScriptContents) { // defer makes no sense without src: // https://developer.mozilla.org/en/docs/Web/HTML/Element/script Element wrapper = createJavaScriptElement(null, false); wrapper.appendChild( new DataNode(javaScriptContents, wrapper.baseUri())); return wrapper; }
/** * Replace link tags with style tags in order to keep the same inclusion * order * * @param doc * the html document * @param cssContents * the list of external css files with their content */ private void internStyles(Document doc, List<ExternalCss> cssContents) { Elements els = doc.select(CSS_LINKS_SELECTOR); for (Element e : els) { if (!TRUE_VALUE.equals(e.attr(SKIP_INLINE))) { String path = e.attr(HREF_ATTR); Element style = new Element(Tag.valueOf(STYLE_TAG), ""); style.appendChild(new DataNode(getCss(cssContents, path), "")); e.replaceWith(style); } } }
element.attr("src", sourceDocument); } else { DataNode dn = new DataNode(sourceDocument, element.baseUri()); element.appendChild(dn);
void insert(Token.Character characterToken) { Node node; // characters in script and style go in as datanodes, not text nodes String tagName = currentElement().tagName(); if (tagName.equals("script") || tagName.equals("style")) node = new DataNode(characterToken.getData(), baseUri); else node = new TextNode(characterToken.getData(), baseUri); currentElement().appendChild(node); // doesn't use insertNode, because we don't foster these; and will always have a stack. }
dataNode = TextNode.createFromEncoded(text, baseUri); else // data not encoded but raw (for " in script) dataNode = new DataNode(text, baseUri); lines(dataNode, text);
dataNode = TextNode.createFromEncoded(text, baseUri); else // data not encoded but raw (for " in script) dataNode = new DataNode(text, baseUri); lines(dataNode, text);
dataNode = TextNode.createFromEncoded(text, baseUri); else // data not encoded but raw (for " in script) dataNode = new DataNode(text, baseUri); lines(dataNode, text);
bytes = DynamicResourceManager.runJSPostProcessors(jsPostProcessors, bytes); String scriptSource = new String(bytes, "UTF-8"); newScript.appendChild(new DataNode(scriptSource, "")); newScript.attr("no-inline", "true"); changes.add(() -> script.replaceWith(newScript)); String minified = new String(JSMin.minify(script.html().getBytes("UTF-8")), "UTF-8"); Element newScript = new Element(Tag.valueOf("script"), "" ); newScript.appendChild(new DataNode(minified, "")); newScript.attr("no-inline", "true"); changes.add(() -> script.replaceWith(newScript));
Element style = new Element(Tag.valueOf("style"), "" ); byte[] bytes = FileUtil.readFully(impFi); style.appendChild( new DataNode(new String(bytes,"UTF-8"),"") ); link.replaceWith(style);
public void head(Node source, int depth) { NodeWrapper node = new NodeWrapper(source); NodeWrapper parentNode = elements.isEmpty() ? null : elements.peek(); elements.push(node); if (source instanceof Element) { Element sourceEl = (Element) source; String tagName = sourceEl.tagName(); if (tagName.equals("body")) { return; } if(shouldKeepChild(node, parentNode)) { Element destChild = createSafeElement(sourceEl); destination.appendChild(destChild); destination = destChild; } } else if (source instanceof TextNode) { TextNode sourceText = (TextNode) source; TextNode destText = new TextNode(sourceText.getWholeText(), source.baseUri()); destination.appendChild(destText); } else if (source instanceof DataNode) { DataNode sourceData = (DataNode) source; DataNode destData = new DataNode(sourceData.getWholeData(), source.baseUri()); destination.appendChild(destData); } }
private static Element createDependencyElement( BootstrapUriResolver resolver, LoadMode loadMode, JsonObject dependency, Dependency.Type type) { boolean inlineElement = loadMode == LoadMode.INLINE; String url = dependency.hasKey(Dependency.KEY_URL) ? resolver.resolveVaadinUri( dependency.getString(Dependency.KEY_URL)) : null; final Element dependencyElement; switch (type) { case STYLESHEET: dependencyElement = createStylesheetElement(url); break; case JAVASCRIPT: dependencyElement = createJavaScriptElement(url, !inlineElement); break; case HTML_IMPORT: dependencyElement = createHtmlImportElement(url); break; default: throw new IllegalStateException( "Unsupported dependency type: " + type); } if (inlineElement) { dependencyElement.appendChild( new DataNode(dependency.getString(Dependency.KEY_CONTENTS), dependencyElement.baseUri())); } return dependencyElement; }
String script = scriptTag.html(); scriptTag.html(""); scriptTag.appendChild(new DataNode(script.replace("\n});", String .format(",\n \"widgetsetUrl\": \"%s\"\n});", widgetsetUrl)), scriptTag.baseUri()));