gpt4 book ai didi

ios - 无法在容器 View 中加载 xml 数据

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

我正在尝试使用 XMLParser 解析 XML url。这是示例文件:

<itemlist>
<item name="Wave" id="1345" working="YES" extra="abcdef"/>
<item name="SCOOP" id="7585" working="YES" extra="sdgsdga"/>
<item name="Alpha" id="3983" working="NO" extra="jkbk"/>
<item name="panda" id="0237" working="YES" extra="adjkbvd"/>
<item name="ANT" id="7483" working="NO" extra="lnvdnlvs"/>
<item name="Wave!" id="9283" working="YES" extra="hiofenl"/>
<item name="o8" id="9473" working="NO" extra="lacknl"/>
<item name="Enjoy" id="8503" working="NO" extra="dnlk"/>
<item name="89" id="8383" working="YES" extra="nklvdnl"/>
<item name="Hub" id="0023" working="NO" extra="vdnlk"/>
</itemlist>

我能够解析 XML 文件并可以在控制台中查看数据,但容器 View 上只有一个单元格加载。这是我的代码:

func beginParsing() {

guard let url = URL(string: "http://example.com/") else { return }

let parser = XMLParser(contentsOf: url)
parser?.delegate = self
parser?.parse()
self.collectionView?.reloadData()
}

func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String] = [:]) {

self.items = [Items]()

if elementName == "item" {
let item = Items()
if let name = attributeDict["name"] {
item.nameLabel = name
print(item)
}
if let itemWorking = attributeDict["working"] {
item.itemWorkingLabel = itemWorking
print(itemWorking)
}
if let itemId = attributeDict["id"] {
item.idLabel = itemId
print(itemId)
}
if let itemExtra = attributeDict["extra"] {
item.extraLabel = itemExtra
print(itemExtra)
}

self.items?.append(item)
}
}

func parser(_ parser: XMLParser, foundCharacters string: String) {
self.foundCharacters += string
}

func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "item" {
let item1 = Item()
self.items?.append(item1)
self.items?.removeLast()
}
self.foundCharacters = ""
}

func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error) {
print("failure: ", parseError)
}

这是模拟器显示的内容: simulator

我该如何解决这个问题?谢谢。

最佳答案

您的问题是在解析的每个元素上重新初始化self.items = [Items]()(在didStartElement上)。

此外,您还将删除下一行刚刚添加的项目:

    self.items?.append(item1)
self.items?.removeLast()

关于ios - 无法在容器 View 中加载 xml 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45885950/

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