From 5fc55b398062f9f849c1a3e6ab8508c7ea08630a Mon Sep 17 00:00:00 2001 From: erkas <erkasraim@gmail.com> Date: Tue, 25 Mar 2025 10:58:51 +0900 Subject: [PATCH 1/3] Modified XmlParser to correctly parse CDATA. --- .../org/readium/r2/shared/util/xml/XmlParser.kt | 4 +++- .../readium/r2/shared/util/xml/XmlParserTest.kt | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt b/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt index 2873222b25..6665c802a6 100644 --- a/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt +++ b/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt @@ -64,7 +64,9 @@ public class XmlParser( val element = buildElement(attributes, children, lang) stack.peek().first.add(element) } - XmlPullParser.TEXT, XmlPullParser.ENTITY_REF -> { + XmlPullParser.CDSECT, + XmlPullParser.TEXT, + XmlPullParser.ENTITY_REF -> { text += parser.text } } diff --git a/readium/shared/src/test/java/org/readium/r2/shared/util/xml/XmlParserTest.kt b/readium/shared/src/test/java/org/readium/r2/shared/util/xml/XmlParserTest.kt index e18c6b9d31..1611509fad 100644 --- a/readium/shared/src/test/java/org/readium/r2/shared/util/xml/XmlParserTest.kt +++ b/readium/shared/src/test/java/org/readium/r2/shared/util/xml/XmlParserTest.kt @@ -209,6 +209,21 @@ class XmlParserTest { fun `An input with no root raises an exception`() { parseXmlString(" \n \n") } + + @Test + fun `CDATA parsed rightly`() { + val doc = parseXmlString( + """ + <text> + pre text <![CDATA["Some text like <, >, & are safe here"]]> post text + </text> + """.trimIndent() + ) + + val cdata = doc.children.first() as TextNode + + assertEquals("pre text \"Some text like <, >, & are safe here\" post text", cdata.text.trim()) + } } @RunWith(RobolectricTestRunner::class) From bf7d68625178b339239ccf0466e16624b2222f12 Mon Sep 17 00:00:00 2001 From: erkas <erkasraim@gmail.com> Date: Tue, 25 Mar 2025 15:16:55 +0900 Subject: [PATCH 2/3] lint error fixed --- .../src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt b/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt index 6665c802a6..f7a5c99edf 100644 --- a/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt +++ b/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt @@ -66,7 +66,7 @@ public class XmlParser( } XmlPullParser.CDSECT, XmlPullParser.TEXT, - XmlPullParser.ENTITY_REF -> { + XmlPullParser.ENTITY_REF, -> { text += parser.text } } From 9c92e94e44a6a217fd220bb2ef82d64993b1080a Mon Sep 17 00:00:00 2001 From: Quentin Gliosca <quentin.gliosca@gmail.com> Date: Tue, 25 Mar 2025 10:27:56 +0100 Subject: [PATCH 3/3] Lint --- .../src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt b/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt index f7a5c99edf..28566cd26e 100644 --- a/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt +++ b/readium/shared/src/main/java/org/readium/r2/shared/util/xml/XmlParser.kt @@ -66,7 +66,8 @@ public class XmlParser( } XmlPullParser.CDSECT, XmlPullParser.TEXT, - XmlPullParser.ENTITY_REF, -> { + XmlPullParser.ENTITY_REF, + -> { text += parser.text } }