2012-09-12 33 views
0

我想要实现的是以下内容。我有一个MySQL数据库,并在PHP脚本中使用SimpleXML将条目转换为XML。所以我有'id','department','name','tel'和'email'字段。 PHP解析它这个输出(不知道这是最合乎逻辑的输出,但似乎合法的)(主唯一键“id”被忽略了)Xcode:XML解析器分组

<?xml version="1.0" encoding="UTF-8" ?> 
<entries> 
<entry> 
<department>DeptA</department> 
<name>NameA</name> 
<tel>0000-111111</tel> 
<email>[email protected]</email> 
</entry> 
<entry> 
<department>DeptB</department> 
<name>NameB1</name> 
<tel>0000-2222222</tel> 
<email>[email protected]</email> 
</entry> 
<entry> 
<department>DebtB</department> 
<name>NameB2</name> 
<tel>0000-2222223</tel> 
<email>[email protected]</email> 
</entry> 

more entry 

</entries> 

所以我要在Xcode三个视图。第一视图(MasterViewController)应报告部门为唯一值。在上面的XML DebtA和DebtB中。 (更多的是用实际的XML)并将它们列在一个表格视图中。试过这样做与NSSlist * uniqueArray(等)没有成功。然后,当点击MasterViewController中的部门时,您将进入DebtViewController,其中列出了在该特定部门工作的所有员工的名称。所以对于债务B应该是NameB1和NameB2。 (仅限于NameA)。最后一个视图是一个DetailViewController,在其上列出了在DebtViewController中点击的特定名称的详细信息。详细信息如姓名,电话和电子邮件。 (也许一张图片,当我得到它的挂起)

所以具体而言,事情是我一直在挣扎着这几天,想知道什么是我应该采取的最佳路线。 XML我目前正在使用任何我想要实现的任务吗?在xcode解析之前,我应该将这些部门分组在XML中吗?或者以后也可以这样做?如果是这样,请提出一些建议。

+0

完成! ......谢谢Eric。 – wvthoog

回答

0

你在track--根据你想要做什么是正确的,我会建议格式化XML文件是这样的:

<?xml version="1.0" encoding="UTF-8"?> 

<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd"> 

<plist version="1.0"> 

<dict> 

    <key>DeptA</key> 

     <array> 

      <dict> 

       <key>Name</key> 

       <string>NameA</string> 

       <key>tel</key> 

       <string>0000-111111</string> 

       <key>email</key> 

       <string>[email protected]</string> 

      </dict> 

     </array> 

    <key>DeptB</key> 

     <array> 

      <dict> 

       <key>Name</key> 

       <string>NameB1</string> 

       <key>tel</key> 

       <string>0000-222222</string> 

       <key>email</key> 

       <string>[email protected]</string> 

      </dict> 

      <dict> 

       <key>Name</key> 

       <string>NameB2</string> 

       <key>tel</key> 

       <string>0000-222223</string> 

       <key>email</key> 

       <string>[email protected]</string> 

      </dict> 

     </array> 

</dict> 

它比更复杂一点你”已经走到这一步,但是这可以让你做这样的事情来读取文件的内容直接放入一个NSDictionary对象:

NSDictionary * departmentDictionary = [[NSDictionary alloc] initWithContentsOfFile:"/path/to/xml/file.xml"]; 

一旦你做到了这一点,你可以代表一个字符串列表部门名称这样做:

NSArray * departmentList = [departmentDictionary allKeys]; 

而且这条线将让你的所有员工在DeptB列表:

NSArray * deptBEmployees = [departmentDictionary objectForKey:@"DeptB"]; 

员工名单中的NSDictionary对象的数组,每个具有存储值的形式返回对于@“名称”,@“tel”和@“电子邮件”。正如你所看到的,它确实不仅仅是一点点复杂,而是相信我 - 一旦你掌握了它,它将变得非常容易存储和读取真正复杂的XML数据。 MacOS甚至有一个属性列表编辑器,它提供了一个很好的界面来创建可以被XCode读取的这种类型的xml文件。

我建议这个链接 - 这对我来说非常有帮助,当我在学习做这种类型的事情: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/PropertyLists/Introduction/Introduction.html#//apple_ref/doc/uid/10000048-CJBGDEGD