[英]Android Jsoup change font-family in style tag
在將html加載到WebView之后,我需要將font-family更改為自定義字體。 基本上我需要得到這個:
<style>
@font-face {
font-family: 'MyFont';
src: url('file:///android_asset/Custom-Font.otf')
}
body { font-family: 'MyFont', serif; font-size: 17px; color: #000; }
a { color: #000; }
</style>
從
<style>
body { font-family: 'Helvetica', serif; font-size: 17px; color: #000; }
a { color: #000; }
</style>
HTML是動態加載的,而不是從資產加載的。 我使用Jsoup,但到目前為止無法獲得此font-family參數...
JSoup不會為您解析CSS。 它最終以懸掛在style
元素上的DataNode
結束。 從那里開始,您可以自己進行解析。 如果您進行簡單的搜索和替換,則可以使用正則表達式來完成工作。 對於復雜的情況,您可以查看[CSS Parser] [1]。 您的情況看起來相對簡單,但是僅給出一個示例就很難確定要保留哪些元素。 這是基本概念的草圖,您可能需要進行修改以完全適合您的情況。 基本思想是從Style
標記中獲取DataNode
並使用正則表達式搜索和替換字段。
final String newFontInfo = "@font-face { \n"
+ "font-family: 'MyFont';\n"
+ "src: url('file:///android_asset/Custom-Font.otf')\n" + "}\n";
Elements styles = doc.select("style");
for (Element style : styles) {
for (DataNode data : style.dataNodes()) {
String dataTxt = data.getWholeData();
if (dataTxt.contains("font-family")) {
final String newData = dataTxt.replaceAll("font-family:\\s*'[^']*'","font-family: 'MyFont'");
data.setWholeData(newFontInfo + newData);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.