代码之家  ›  专栏  ›  技术社区  ›  Yuma Technical Inc.

使用编码键生成XML

  •  1
  • Yuma Technical Inc.  · 技术社区  · 6 年前

    我有很多型号。一个例子是

    struct Person
    {
      let id = Int
      let nameOfBoss = String
    ...
    }
    enum CodingKeys: String, CodingKey
    {
      case id
      case nameOfBoss = "nam_of_boss"
    ...
    }
    

    我要生成XML。Web服务读取类似代码(snake_case)

    ...
    <name_of_boss>Greg</name_of_boss>
    ...
    

    我如何使用codingkeys rawvalue(string)生成上面所述的XML?

    (大多数豆荚我都没有成功,所以我现在就避开它们了。尽管设法使用swxmlhash)

    (我写了一些代码来创建一个对象镜像……但它不会使用rawvalue。)

    1 回复  |  直到 6 年前
        1
  •  1
  •   gcharita    6 年前

    使用您的 CodingKey Codable

    肖恩·摩尔写了一篇 interesting library XMLDecoder XMLEncoder 课程。( this answer 可以帮助您了解如何使用它。

    XMLMapper ObjectMapper 但是对于XML。

    struct Person: XMLMappable {
        var nodeName: String! = "Person"
    
        var id: String?
        var nameOfBoss: String?
    
        init() {
    
        }
    
        init(map: XMLMap) {
    
        }
    
        mutating func mapping(map: XMLMap) {
            id <- map["id"]
            nameOfBoss <- map["nam_of_boss"]
        }
    }
    

    <Person>
        <id>1</id>
        <nam_of_boss>Greg</nam_of_boss>
    </Person>
    

    使用 toXMLString() XMLMappable

    var person = Person()
    person.nameOfBoss = "Greg"
    person.id = "1"
    let xmlString = person.toXMLString()
    

    希望这有帮助。