فهرست منبع

Merge remote-tracking branch 'origin/master'

kunfei 3 سال پیش
والد
کامیت
b7006e2940
1فایلهای تغییر یافته به همراه13 افزوده شده و 6 حذف شده
  1. 13 6
      app/src/main/java/io/legado/app/model/localBook/EpubFile.kt

+ 13 - 6
app/src/main/java/io/legado/app/model/localBook/EpubFile.kt

@@ -190,17 +190,24 @@ class EpubFile(var book: Book) {
     }
     }
 
 
     private fun getBody(res: Resource, startFragmentId: String?, endFragmentId: String?): Element {
     private fun getBody(res: Resource, startFragmentId: String?, endFragmentId: String?): Element {
-        val doc = Jsoup.parse(String(res.data, mCharset))
-        val body = doc.body()
+        val originHtml = String(res.data, mCharset)
+        var html = originHtml
+        var doc = Jsoup.parse(html)
+        var body = doc.body()
         if (!startFragmentId.isNullOrBlank()) {
         if (!startFragmentId.isNullOrBlank()) {
-            body.getElementById(startFragmentId)?.previousElementSiblings()?.remove()
+            body.getElementById(startFragmentId)?.outerHtml()?.let {
+                html = html.substringAfter(it)
+            }
         }
         }
         if (!endFragmentId.isNullOrBlank() && endFragmentId != startFragmentId) {
         if (!endFragmentId.isNullOrBlank() && endFragmentId != startFragmentId) {
-            body.getElementById(endFragmentId)?.run {
-                nextElementSiblings().remove()
-                remove()
+            body.getElementById(endFragmentId)?.outerHtml()?.let {
+                html = html.substringBefore(it)
             }
             }
         }
         }
+        if (html != originHtml) {
+            doc = Jsoup.parse(html)
+            body = doc.body()
+        }
         /*选择去除正文中的H标签,部分书籍标题与阅读标题重复待优化*/
         /*选择去除正文中的H标签,部分书籍标题与阅读标题重复待优化*/
         val tag = Book.hTag
         val tag = Book.hTag
         if (book.getDelTag(tag)) {
         if (book.getDelTag(tag)) {