Skip to content

Commit 3606a6d

Browse files
committedDec 17, 2020
Additional fix for bug #44, as well as test code.
1 parent 64048d6 commit 3606a6d

File tree

3 files changed

+28
-0
lines changed

3 files changed

+28
-0
lines changed
 

‎core/src/commonMain/kotlin/nl/adaptivity/xmlutil/XmlReader.kt

+1
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,7 @@ fun XmlReader.readSimpleElement(): String {
348348
EventType.PROCESSING_INSTRUCTION -> {
349349
}
350350
EventType.TEXT,
351+
EventType.ENTITY_REF,
351352
EventType.CDSECT -> append(t.text)
352353
else -> throw XmlException(
353354
"Expected text content or end tag, found: ${t.eventType}"

‎serialization/src/commonTest/kotlin/nl/adaptivity/xml/serialization/TestCommon.kt

+20
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ package nl.adaptivity.xml.serialization
2525
import kotlinx.serialization.ExperimentalSerializationApi
2626
import kotlinx.serialization.KSerializer
2727
import kotlinx.serialization.SerializationException
28+
import kotlinx.serialization.decodeFromString
2829
import kotlinx.serialization.json.Json
2930
import kotlinx.serialization.json.JsonBuilder
3031
import kotlinx.serialization.modules.EmptySerializersModule
@@ -680,4 +681,23 @@ class TestCommon {
680681
assertEquals(contentText, serialized)
681682
}
682683

684+
685+
@Test
686+
fun deserializeXmlWithEntity() {
687+
val xml = XML {
688+
repairNamespaces = true
689+
policy = DefaultXmlSerializationPolicy(pedantic = false, autoPolymorphic = false)
690+
}
691+
692+
val expected = StringWithMarkup("Chloroacetic acid, >=99%")
693+
694+
val actual = xml.decodeFromString<StringWithMarkup>(
695+
"<StringWithMarkup xmlns=\"http://pubchem.ncbi.nlm.nih.gov/pug_view\">\n" +
696+
" <String>Chloroacetic acid, &gt;=99%</String>\n" +
697+
"</StringWithMarkup>"
698+
)
699+
assertEquals(expected, actual)
700+
}
701+
702+
683703
}

‎serialization/src/commonTest/kotlin/nl/adaptivity/xml/serialization/testClasses.kt

+7
Original file line numberDiff line numberDiff line change
@@ -374,3 +374,10 @@ internal data class Tag(
374374
}
375375

376376
}
377+
378+
@XmlSerialName("StringWithMarkup", "http://pubchem.ncbi.nlm.nih.gov/pug_view", "")
379+
@Serializable
380+
data class StringWithMarkup(
381+
@XmlElement(true) @SerialName("String") val string: String = "",
382+
val markup: List<String> = emptyList()
383+
)

0 commit comments

Comments
 (0)