CoreOffice / XMLCoder

Easy XML parsing using Codable protocols in Swift
https://coreoffice.github.io/XMLCoder/
MIT License
793 stars 104 forks source link

CDATA usage in array of tags gives empty string instead of value #260

Closed johankool closed 1 year ago

johankool commented 1 year ago

I am trying to get this failing test to work, but not getting anywhere.

import XCTest
import XMLCoder

final class CDATAEntryTest: XCTestCase {
    private struct DataEntry: Codable, Equatable {
        let value: String
        enum CodingKeys: String, CodingKey {
            case value = ""
        }
    }

    private struct Container: Codable, Equatable {
        let data: [DataEntry]
    }

    private let xml =
        """
        <container>
           <data><![CDATA[lorem ipsum]]></data>
           <data>bla bla</data>
        </container>
        """.data(using: .utf8)!

    func testXMLWithCDataDataEntries() throws {
        let decoder = XMLDecoder()
        let result = try decoder.decode(Container.self, from: xml)
        XCTAssertEqual(result, Container(data: [.init(value: "lorem ipsum"), .init(value: "bla bla")])) // FAILS: got: ["", "bla bla"], but expected: ["lorem ipsum", "bla bla"]
    }
}