iphone - 带有XML的NSString到带有NSDictionary的NSArray

标签 iphone xml ios ios4 nsxmlparser

我有一个似乎无法解决的小问题。我有一个包含以下内容的XML页面:

<?xml version="1.0" encoding="utf-8"?>
<ArrayOfCategory xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://api.tradera.com">
  <Category Id="1612" Name="Category 1">
    <Category Id="161213" Name="Category 1 subcat 1">
      <Category Id="340761" Name="Category 1, subcat 1, subcat 1" />
      <Category Id="340761" Name="Category 1, subcat 1, subcat 2" />
      <Category Id="340761" Name="Category 1, subcat 1, subcat 3" />
      <Category Id="340761" Name="Category 1, subcat 1, subcat 4" />
      <Category Id="340761" Name="Category 1, subcat 1, subcat 5" />
    </Category>
    <Category Id="161213" Name="Category 1 subcat 2"></category>
    <Category Id="161213" Name="Category 1 subcat 3">
      <Category Id="340761" Name="Category 1, subcat 3, subcat 1" />
    </category>
  </Category>
  <Category Id="1612" Name="Category 1">
    [...]
  </category>
</ArrayOfCategory>

我想要做的是将其转换为带有字典的数组。
因此,这是一个键值为0 =字典字典的数组,其中包含项ID,名称和子目录。子猫应该是具有相同键的数组。

到目前为止,我有以下代码:
- (void)viewDidLoad
{
    [super viewDidLoad];

    [self startParsing];
}

- (void)startParsing {
    NSString *path = [[NSBundle mainBundle] pathForResource:@"categories" ofType:@"xml"];

    NSData *xmlData = [[NSData alloc] initWithContentsOfFile:path];
    NSXMLParser *parser = [[[NSXMLParser alloc] initWithData:xmlData] autorelease];
    [parser setDelegate:self];
    [parser parse];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
    NSLog(@"Started %@, attribute: %@", elementName, attributeDict);
}

但是我似乎无法弄清楚如何使用NSXMLParser创建此数组,有什么建议吗?

最好的祝福,
保罗·皮伦

最佳答案

正如聊天中所讨论的那样,您将需要跟踪自己处于哪个级别

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
    NSLog(@"Started %@, attribute: %@", elementName, attributeDict);
}

部分。可能在其中使用全局变量吗?

关于iphone - 带有XML的NSString到带有NSDictionary的NSArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3966330/

相关文章:

ios - 访问可变数组时遇到问题

iOS 9 以静音模式播放音频但保持其他应用程序的音乐播放运行

ios - UIView 不接受 UIViewControllers 数据

iPhone 使用 SSL 登录网站

iphone - 添加音频文件iPhone应用程序

javascript - 有没有办法使用 JavaScript 控制 iPod Touch 的键盘方向?

java - 使用java检索xml信息

安卓。 Gradle 构建错误 : Error parsing XML: not well-formed (invalid token)

java - RadioButton 无效双

objective-c - objective-c :如果我使用前向GeoCoding(Google API),可以为我的应用程序收取费用吗?