【发布时间】:2017-11-15 07:16:22
【问题描述】:
我正在尝试将一些 XML 数据解析为 tableView,但我一直想出我的字符串为空,因此不允许我填充 tableView。我已经在网上进行了全面检查,试图找到如何实现这一目标的好例子,但由于一直在迅速变化,一切似乎都已经过时了。
<?xml version="1.0" encoding="UTF-8"?>
<client region = "Midwest">
<person
name = "Pete Seeger"
profession = "Musician"
dob = "May 3, 1919">
<child
name = "Daniel">
</child>
<child
name = "Mika">
</child>
<child
name = "Tinya">
</child>
</person>
</client>
接下来是我的 Client.swift 文件
class Client{
var clientName: String = String()
var clientProfession: String = String()
var clientDob: String = String()}
在我的 ViewController 中我已经声明了这些变量
var client: [Client] = []
var eName: String = String() //element Name
var cName: String = String()
var cProfession: String = String()
var cDOB: String = String()
前面是我的didStart/didEnd/和foundCharacters
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {
//this finds the starting tag of <person>
eName = (elementName as NSString) as String
if eName == "person"{
print("we found start tag of person")
cName = String()
cProfession = String()
cDOB = String()
}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?)
{
//this looks for the end tag </person>
if eName == "person"{
print("we found End tag of person")
let client = Client() //letting the client = to w.e
print(client, "printing client in the didEndElement")
client.clientName = cName
print(cName, "This is the cName though nothing will show I bet...")
client.clientProfession = cProfession
client.clientDob = cDOB
}
func parser(_ parser: XMLParser, foundCharacters string: String)
{
let foundChar = string.trimmingCharacters(in: NSCharacterSet.whitespacesAndNewlines)
print(foundChar, "This is foundChar for foundCharacters")
if(foundChar.isEmpty){
print("its empty")
}
else{
if eName == "name"{
cName += foundChar
cProfession += foundChar
cDOB += foundChar
}
}
我正在寻找人的开始标签和结束标签,但是一旦它到达 foundCharacters 似乎它返回的是空的。我在这里忽略了什么吗?
【问题讨论】:
-
你可能想试试这个:github.com/tadija/AEXML
-
检查这可能对您的场景有所帮助:stackoverflow.com/questions/29937456/…
-
所有这些在线示例都使用 NSXML 函数和调用,我知道有些你应该能够删除 NS 并且它会正常运行,但我仍然留下与如何相同的示例我的设置没有任何进展。