1

我正在尝试将来自 Google 的 XML 响应转换为自定义对象。NSMutableArray我的问题是在 ie 中或NSDictionary当您有多个值时最好使用什么,<category>或者<title>如何添加它们。

<category scheme="http://schemas.google.com/spreadsheets/2006" 
          term="http://schemas.google.com/spreadsheets/2006#spreadsheet"/>
<title type="text">nothing</title>
4

2 回答 2

3

将 XML 编组到 NSDictionary 上是可行的,但它会导致代码非常脆弱且难以维护。两个原因:

  • 请求数据时会产生“魔术字符串”。此字符串中的任何更改都将在整个代码库中传播。

  • 它将难以阅读,并且不会表现出良好 OO 的理想自文档功能。

相反,强烈建议将服务负载的 XML 映射到特定于用例的 Objective-C 对象。这与契约优先开发的原则是一致的,这意味着对服务的任何更改可能只会导致此映射到 Objective-C 对象的更改。

一个不错的 XML 框架是RaptureXML

在 RXMLElement 类上创建一个类别并提取所需的信息。然后使用该元素,只需:

RXMLElement* element = [RXMLElement elementWith. . . ];
MyDomesticCat* type = [element asCat];
于 2013-11-05T01:45:58.110 回答
0

理想情况下,任何 XML 都是字典和数组的组合,其根标记启动单个键字典。要减少将 xml 解析为自定义对象模型的开销,您可以使用github 上提供的不错的框架 XMLReader 。

如果你使用这个框架,你的 xml 解析就变得很简单:

NSMutableDictionary* dictionary = [[XMLReader dictionaryForXMLData:<# your xml data #> error:&err] mutableCopy];
NSLog(@"%@",dictionary);
//use dictionary
[dictionary release];

但是,您需要传递一些格式良好的 xml 数据作为其输入。此外,您可能需要根据需要操作已解析字典的内容。

于 2013-11-05T00:28:42.443 回答