我想构建一个应用程序来导航数据层次结构。我一直在咨询这个Drill-down Hierarchical UITableView页面,并且真的不知道如何使用xml来实现这种节点结构。我试图避免创建100多个tableviewscontrollers等。从我的理解到目前为止,我相信我需要使用节点。在我一直向下钻孔之后,我将需要使用不同的视图控制器,但我相信我理解这是怎么回事。
这是我的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
}
}
}
答案 0 :(得分:0)
看起来解析器希望生成类别层次结构。 (我不会在xml示例中看到任何匹配,但我会假设它在那里)。
首先需要的是一个树状结构的Category
对象。最简单的是,这是一个NSObject子类,它有一个name
和一个子数组 - 重要的是 - 是一个Category
的数组。
Category上的类方法可以进行xml解析。将xml解析为树结构的基本概要是:
那棵树是在另一个问题中讨论的树。只有当您拥有树结构并且正在浏览当前节点(或当前类别)的概念时,才有可能实现整个想法。