gpt4 book ai didi

xml - 强类型 xml 属性组合的提示(构建器)

转载 作者:行者123 更新时间:2023-11-30 13:19:06 27 4
gpt4 key购买 nike

我正在开发一个 xml 构建器,它符合其元素中的特定属性限制。例如,此 Person 元素的唯一有效属性是“性别”,并且值只能是“男”或“女”。

现在,我使用 [String:String] 作为属性键/值。我想要一种强类型的方法来根据每个唯一元素属性要求强制这些限制。

我对快速执行此操作的方式感到不知所措。任何想法将不胜感激。谢谢!

extension XmlBuilder {
func person(text: String? = "", attributes: [String:String] = [String:String]()) -> XmlBuilder {
fn = compose(fn, { doc in
doc.root.addChild(name: "Person", value: text, attributes: attributes)
return doc
})
return self
}
}

let xml = XmlBuilder()
.person("Jon", attributes: ["gender":"male"])
.construct()

最佳答案

您可能应该考虑以类型安全的方式构建对象模型,然后在内部或外部将其自身呈现为 XML,而不是使用类型安全的 XML 构建器。

所以你可以:

enum Gender { case Male, Female }
struct Person { let name:String; let gender:Gender }

然后您可以以类型安全的方式创建它们:

Person(name:"alblue", gender: .Male)

然后遍历这些元素以生成 XML 元素,或者添加一个 toXML 方法来返回包含这些元素的字符串。如果您的所有数据结构都继承了一个允许进行转换的协议(protocol),那么您可以将其集成到构建器中。但是您必须使用临时类型安全数据结构来代替通用字典来执行此操作。

关于xml - 强类型 xml 属性组合的提示(构建器),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37939765/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com