我目前正在尝试解析来自 STANDS4 api 的 rest xml api 响应...
XML 文件看起来像这样:
<results>
<result>
<quote>
To be free it is not enough to beat the system, one must beat the system every day.
</quote>
<author>Anonymous</author>
</result>
</results>
我想要做的是能够打印出 XML 响应并将引用和作者分配给 UILabel。我目前拥有的是以下代码(我有我的用户 ID 和我的 token ID)
import UIKit
class ViewController: UIViewController,NSXMLParserDelegate {
var strXMLData:String = ""
var currentElement:String = ""
var passData:Bool=false
var passName:Bool=false
var parser = NSXMLParser()
@IBOutlet weak var lblNameData: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
let url:String="http://www.stands4.com/services/v2/quotes.php?uid=youridhere&tokenid=youridherezf&searchtype=AUTHOR&query=Albert+Einstein"
let urlToSend: NSURL = NSURL(string: url)!
// Parse the XML
parser = NSXMLParser(contentsOfURL: urlToSend)!
parser.delegate = self
let success:Bool = parser.parse()
if success {
print("parse success!")
print(strXMLData)
lblNameData.text=strXMLData
} else {
print("parse failure!")
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
currentElement=elementName;
if(elementName=="id" || elementName=="name" || elementName=="cost" || elementName=="description")
{
if(elementName=="name"){
passName=true;
}
passData=true;
}
}
func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
currentElement="";
if(elementName=="id" || elementName=="name" || elementName=="cost" || elementName=="description")
{
if(elementName=="name"){
passName=false;
}
passData=false;
}
}
func parser(parser: NSXMLParser, foundCharacters string: String) {
if(passName){
strXMLData=strXMLData+"\n\n"+string
}
if(passData)
{
print(string)
}
}
func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) {
NSLog("failure error: %@", parseError)
}
}
我目前收到解析成功的响应,但没有打印出任何内容。我从本教程中获得了以上代码: http://ashishkakkad.com/2014/10/xml-parsing-in-swift-language-ios-9-nsxmlparser/
因此,我很可能需要进行一些更改才能使用我当前的 API,但我不确定具体要做什么。
感谢任何帮助!
最佳答案
您的第一个问题是您的 XMLParsing 函数从不寻找正确的元素名称(假设您的示例 xml 正是您得到的)。您的 XML 解析正在查找“id”、“name”、“cost”或“description”。您的示例 XML 提供了“引用”和“作者”。您需要通过 XML 解析函数进行调试,并在使用它们之前了解它们实际在做什么。那么你应该可以开始了。
关于ios - 解析 REST XML API 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38248011/