【发布时间】:2017-02-14 16:39:08
【问题描述】:
我想构建一个应用来导航数据层次结构。我一直在咨询这个Drill-down Hierarchical UITableView 页面并且真的不知道如何使用xml 来实现这种节点结构来实现这一点。我试图避免创建 100 多个 tableviewscontroller 等。据我目前的理解,我相信我需要使用节点。在我一直向下钻取之后,我将需要使用不同的视图控制器,但我相信我知道如何做到这一点。
这是我的 XML 文件的一个小例子。如有必要,我可以对其进行更改以使其正常工作。
<hnt>
<face>
<action id="1">
<name>Occipitofrontalis</name>
<type>data</type>
<description>data</description>
</action>
</face>
<temporoman>
<mandibulardep>
<action id="1">
<name>Occipitofrontalis</name>
<type>data</type>
<description>data</description>
</action>
<action id="2">
<name>Occipitofrontalis</name>
<type>data</type>
<description>data</description>
</action>
</mandibulardep>
</temporoman>
</hnt>
<face>
</face>
我正在使用此代码来解析我的 xml 文件。我不确定如何打印样本。
override func viewDidLoad() {
super.viewDidLoad()
if let path = Bundle.main.url(forResource: "01 - MainCategories", withExtension: "xml") {
if let parser = XMLParser(contentsOf: path) {
parser.delegate = self
parser.parse()
}
}
}
func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) {
eName = elementName
if elementName == "mainCat" {
mainCategoriesTitle = String()
}
}
func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) {
if elementName == "mainCat" {
let mCat = MainCategories()
mCat.mainCategoriesTitle = mainCategoriesTitle
mainCat.append(mCat)
}
}
func parser(_ parser: XMLParser, foundCharacters string: String) {
let data = string.trimmingCharacters(in: CharacterSet.whitespacesAndNewlines)
if (!data.isEmpty) {
if eName == "title" {
mainCategoriesTitle += data
}
}
}
【问题讨论】:
-
您能否提供一个具有代表性的 xml 示例?你已经解析了吗?请显示从解析发出的结构。
-
如果每个节点的结构相似,您可以重复使用相同的视图控制器,并手动推送它。
-
@danh 我已经用一些代码和示例 xml 更新了我的问题。
标签: ios uitableview