0

我从 Web 服务中获取了一些 XML:

<?xml version="1.0" encoding="utf-8"?>
<NewDataSet>
  <Table>
    <CITY>Jupiter</CITY>
    <STATE>FL</STATE>
    <ZIP>33477</ZIP>
    <AREA_CODE>561</AREA_CODE>
    <TIME_ZONE>E</TIME_ZONE>
  </Table>
</NewDataSet>

我需要一种简单干净的方法来从这个 XML 中获取 CITY 和 STATE 值。在 iOS 中是否有一种简单易用的方法可以做到这一点?

4

5 回答 5

2

有一个简洁的 NSXMLParser Wrapper 可以为您将 XML 文件转换为 NSDictionary。

它简单而干净!

http://troybrant.net/blog/2010/09/simple-xml-to-nsdictionary-converter/

然后从那里,您可以使用:

NSDictionary *dict = [self convertXML:xmlContents];
NSArray *tables = [dict objectForKey:@"NewDataSet"];

for (NSDictionary *table in tables) {

   NSLog(@"City = %@", [table objectForKey:@"city"]);

}
于 2012-07-25T11:10:17.487 回答
1

使用使用 NSXMLParser 编写的xmldocument 解析器,但开发人员可以使用更简单的功能。

  1. 将 SMXMLDocument.h 和 .m 文件添加到您的项目中
  2. 在您的类实现文件(.m 文件)中添加#import

    // create a new SMXMLDocument with the contents the xml file
    // data is the NSData representation of your XML
    SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error];
    
    // Pull out the <NewDataSet> node
    SMXMLElement *dataset = [document.root childNamed:@"NewDataSet"];
    
    // Look through <Table> children
    for (SMXMLElement *table in [dataset childrenNamed:@"Table"]) {
        // demonstrate common cases of extracting XML data
        NSString *city = [table valueWithPath:@"CITY"]; // child node value
        NSString *state = [table valueWithPath:@"STATE"]; // child node value
    }
    

PS我没有运行此代码,但根据类似用法进行了修改以匹配您的案例。

于 2012-07-25T11:49:23.620 回答
0

完成此操作的工具已丢失(链接)。我会推荐这种SAX方法,因为您只需要解析这些XML数据(例如NSXMLParser)。

于 2012-07-25T11:09:26.020 回答
0

请看:NSXMLParser

和方法:(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI (NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict

使用起来非常简单。`

于 2012-07-25T11:10:14.433 回答
0

你可以使用 NSXMLParser,我现在不在我的 mac,所以大炮仔细检查,但基本上你用返回的数据设置了一个 NSXMLParser。然后,您将一个类设置为解析器的委托,当解析器命中一个元素时,它会告诉您它所命中的元素及其属性。

如果您对 Web 服务有任何控制权,我会认真考虑使用 JSON 数据而不是 XML。ObjC 带有一个非常好的 JSON 解析器。

于 2012-07-25T11:11:54.663 回答