我有一个包含以下数据的 XML 文件:
<Book>
<title>Some Random Book</title>
<author>Someone Someone</author>
<book_type>
<FICT />
<REF />
</book_type>
</Book>
我正在尝试为其编写一个结构,但我不确定如何处理“book_type”内的自关闭标签。这些是枚举吗?并非所有书籍都有“book_type”,如果有,可能会有不止一本,如上例所示。
这是我所拥有的,不确定这是否正确:
struct Book {
var title: String?
var author: String?
var book_type: BookType?
}
enum BookType {
case fiction
case nonfiction
case reference
case autobiography
}
谢谢!
XML中的每个标签都可以被视为代表一个对象。在这种情况下,
Book
是一个具有多个属性的复杂对象。 title
和 author
是简单对象,可以用现有数据类型(字符串)表示。从示例来看,Book
可以有多种书籍类型,因此 book_type
可以表示为数组。这可以是字符串或枚举的数组,这取决于您以及如何在代码中的其他地方使用这些值。
对于自闭合标签,我认为标签名称通常代表属性名称,而不是标签的值。自关闭标签类似于具有默认值的对象。在有多个值的情况下,很难看出差异,因为您没有为列表中的项目命名。
我组织 XML 数据的方式类似于:
<Book>
<title>Some Random Book</title>
<author>Someone Someone</author>
<book_type>
<type>FICT</type>
<type>REF</type>
</book_type>
</Book>
以及 Swift 模型结构:
struct Book {
var title: String?
var author: String?
var book_type: [BookType]
}
enum BookType {
case fiction
case nonfiction
case reference
case autobiography
}
希望这有帮助。