【问题标题】:Add custom css to html code with jsoup使用 jsoup 将自定义 css 添加到 html 代码
【发布时间】:2011-08-02 15:06:43
【问题描述】:

我正在开发一个 Android 应用程序,该应用程序加载一个 HTML 页面并在 web 视图中显示它。 问题是我想添加我的自定义 css(加载的 HTML 没有任何 CSS 或指向 css 的链接)。如何使用 jsoup 将自定义 css 添加到 HTML 代码中? 我不能修改html。 以及 webview 之后如何打开它? 谢谢

【问题讨论】:

  • 这不是一个相同的问题。我无法使用 loadDataWithBaseURL 加载它,因为 HTML 中没有任何指向 ccs 的链接。所以我不能在本地应用程序中引用 css。

标签: java jquery android css jsoup


【解决方案1】:

几种方法。您可以使用 Element#append() 将一些 HTML 附加到元素。

Document document = Jsoup.connect(url).get();
Element head = document.head();
head.append("<link rel=\"stylesheet\" href=\"http://example.com/your.css\">");

或者,使用Element#attr(name, value) 将属性添加到现有元素。这是一个将style="color:pink;" 添加到所有链接的示例。

Document document = Jsoup.connect(url).get();
Elements links = document.select("a");
links.attr("style", "color:pink;");

无论哪种方式,修改后通过Document#html()获取最终的HTML字符串。

String html = document.html();

通过PrintWriter#write()(使用正确的字符集)将其写入文件。

String charset = Jsoup.connect(url).response().charset();
// ...
Writer writer = new PrintWriter("/file.html", charset);
writer.write(html);
writer.close();

最后在 webview 中打开它。因为我无法从头顶上分辨出来,所以这里只是一个我认为有帮助的示例链接:WebViewDemo.java。顺便说一句,我在this blog 上找到了链接(我又被谷歌找到了)。

【讨论】:

  • 什么是正确的字符集?我必须在“//...”里面放什么?
  • 正确的字符集是Jsoup.connect(url).response().charset();//... 只是获取html 所需的代码。
  • 谢谢,但是当我把它放到 Eclipse 中时,它说:“添加抛出 decleration”... public void main(String... args) throws FileNotFoundException, UnsupportedEncodingException{ try{ ... 我什么必须做什么?
  • 只需在方法签名中添加throws IOException 或将其放入try-catch 中。当您单击红色项目符号时,您是否探索过 Eclipse 给出的建议?
  • 好的,我已经放了一个try-catch。但是现在它在 webview 中说:文件:///android_asset/file.html 处的网页无法加载为:找不到请求文件。文件.html
【解决方案2】:

可能最简单的方法是在 HTML 文本上搜索和替换以插入您的自定义样式,然后再将其加载到您的 WebView。我在我的应用程序 BBC News 中执行此操作,以稍微调整新闻文章页面的样式。我的代码如下所示:

text = text.replace("</head>",
        "<style>h1 {font-size: x-large;} h1, div.date, div.storybody, img {margin:4px; padding:4px; line-height:1.25;}</style></head>");

看看我如何搜索和替换末尾的head 标记(包括我自己的&lt;/head&gt; 标记在替换段中。这确保新的sn-p 在页面上以正确的速度出现。

【讨论】:

    【解决方案3】:

    有几种方法可以在 html 中包含 ccs

    如果您将其存储为外部文件,我会使用它:

    <head><link rel="stylesheet" type="text/css" href="mystyle.css" /></head>
    

    如果你想把它放在 html 文件中:

    <head>
    <style type="text/css">
    hr {color:sienna;}
    p {margin-left:20px;}
    body {background-image:url("images/back40.gif");}
    </style>
    </head>
    

    或者如果你想修改单个标签:

    <p style="color:sienna;margin-left:20px">This is a paragraph.</p>
    

    *编辑

    这些示例中的任何一个在显示时都不应该有任何问题。

    参考:W3 Schools CSS

    【讨论】:

    • 问题是我从网页加载 HTML,所以我无法更改 HTML。我想用jsoup添加代码,然后加载我自己的css。
    • 我明白了,您的问题具有误导性,听起来您可以控制 html。我编辑了这个问题,以正确的方式指出其他人。我自己没有任何经验。 whit jsoup
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-10
    • 2015-05-31
    • 2013-08-02
    • 1970-01-01
    • 2014-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多