gpt4 book ai didi

ios - 使用 Swift 和 KissXML 创建 XML : example?

转载 作者:行者123 更新时间:2023-11-30 10:55:04 25 4
gpt4 key购买 nike

我正在尝试使用 KissXML ( https://github.com/robbiehanson/KissXML.git ) 为 iOS 构建 XML 文档。

据说这是 Apple 的 NSXML 类簇的直接替代品,它仅在 Mac 上可用,在 iOS 上不可用。据说这是 iOS 的 NSXML 的一个几乎完整且健壮的实现。

我在 Xcode 项目中安装了 KissXML。我认为正确,因为在import KissXML之后我可以print(KissXMLVersionNumber)并得到1.0。

但是尽管我尽力了,我还是无法从头开始创建 XML 文档。我不知道如何理解“直接替换”。例如,Apple 的 NSXMLDocument 有一个 setRootElement() 方法,但 KissXML 的 XMLDocument 没有。也许我错过了显而易见的事情。谁能提供一个简单的例子来说明如何进行?我尝试构建用于练习的 xml 表达式是:

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE svg>
<svg width="220px" height="120px" xmlns="http://www.w3.org/2000/svg">
<g>
<text font-size="32" x="25" y="60">
Hello, World!
</text>
</g>
</svg>

我使用的是 Xcode 10.1、Swift 4.2。

我期望应该有效但无效的示例:

首先,为 MacOS 编写 Cocoa 应用程序的代码。这使用 native NSXMLDocument 类(现在重命名为 XMLDocument,正如 XCode 告诉我的那样;我不能在代码中使用 NSXMLDocument)。这是 ViewController 类的完整代码:

import Cocoa

class ViewController: NSViewController {

override func viewDidLoad() {
super.viewDidLoad()
let xmlElement = XMLElement(name: "name", stringValue: "value")
let xmlDoc = XMLDocument(rootElement: xmlElement)
print("\(xmlDoc.stringValue!)")
}
}

正如预期的那样,该程序的输出是“value”。

现在,针对 iOS 的单 View 应用程序使用相同的程序,使用 KissXML 作为直接替代品:

import UIKit
import KissXML
class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
let xmlElement = XMLElement(name: "name", stringValue: "value")
let xmlDoc = XMLDocument(rootElement: xmlElement)
print("\(xmlDoc.stringValue!)")
}
}

该程序无法编译。在定义 xmlDoc 的第 8 行,XCode 告诉我无法使用类型为“(rootElement: XMLElement)”的参数列表调用类型“XMLDocument”的初始值设定项

(XMLDocument 的检查器告诉我 typealias XMLDocument = DDXMLDocument,这又将我指向 KissXML 框架内部的定义。因此,它确实是一个 KissXML 类。在 MacOS 情况下,它只是简单地说 class XMLDocument : XMLNode,它指向 Foundation/NSXMLDocument 内部。)

为了确保 KissXML 正确安装,我运行了以下程序:

import UIKit
import KissXML
class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
print("\(KissXMLVersionNumber)")
}
}

该程序运行并输出“1.0”。

最佳答案

我得出的结论是,KissXML 不再是 NSXML 的直接替代品,因为自 KissXML 开发以来 NSXML 不断发展。一定有一种方法可以实现我想要的,但由于唯一的文档是对 NSXML 的引用,因此它没有明显的用处。我转向了AEXML,它很好地满足了我的需求。

关于ios - 使用 Swift 和 KissXML 创建 XML : example?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54054191/

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