在 Swift 中生成带有属性的 XML 元素
Posted
技术标签:
【中文标题】在 Swift 中生成带有属性的 XML 元素【英文标题】:Generating XML element with attributes in Swift 【发布时间】:2020-09-21 05:05:01 【问题描述】:我正在学习 Swift,并开始了一个小项目来读取 csv 文件并发出 XML 文件。我有这个代码-
import Cocoa
import Foundation
let base = XMLElement(name: "root")
let fcpxxml = XMLDocument(rootElement: base)
var build = XMLElement(name: "clip", stringValue:"myClip" )
base.addChild(build)
print(fcpxxml.xmlString)
它输出 -
<root><clip>myClip</clip></root>
我需要添加属性。在我看到的 Apple 开发者文档中
element(withName:children:attributes:)
我试图用它来创建一个以 nil 属性开头的元素 -
var base1 = element(withName name: "angle", children: nil, attributes: nil )
我得到错误
使用未解析的标识符“元素”
我不明白为什么这不起作用,我正在寻找一个可以让我生成的代码示例 -
<root><clip name = "myClip"> </clip></root>
【问题讨论】:
【参考方案1】:您似乎在寻找this method - attribute(withName:stringValue:)
。它返回一个XMLNode
,您可以使用addAttribute
将其添加到XMLElement
。
let base = XMLElement(name: "root")
let fcpxxml = XMLDocument(rootElement: base)
let build = XMLElement(name: "clip", stringValue:"")
build.addAttribute(XMLNode.attribute(withName: "name", stringValue: "myClip") as! XMLNode)
base.addChild(build)
print(fcpxxml.xmlString) // <root><clip name="myClip"></clip></root>
您找到的方法element(withName:children:attributes:)
也可用于创建您的 XML,但需要大量转换。
let base = XMLNode.element(withName: "root", children: [
XMLNode.element(withName: "clip",
children: nil,
attributes: [
XMLNode.attribute(withName: "name", stringValue: "myClip") as! XMLNode
]) as! XMLNode
], attributes: nil) as! XMLNode
【讨论】:
以上是关于在 Swift 中生成带有属性的 XML 元素的主要内容,如果未能解决你的问题,请参考以下文章
使用 databricks 在 Spark(scala) 中生成具有属性和值的 XML