从此示例代码的服务器中的xml文件中解析xml值

时间:2012-07-04 07:19:30

标签: iphone ios xcode nsurlconnection nsxmlparser

我已经从教程中使用xml解析器创建了一个应用程序。但是这个教程很容易。在这个xml文件是从本地xml解析的。但是如果我需要解析xml文件中的值,请说www。 xxxxx.com/xxx.xml..how我可以修改代码...指导请..

- (void) applicationDidFinishLaunching:(UIApplication *)application {

// find "sample.xml" in our bundle resources
NSString *sampleXML = [[NSBundle mainBundle] pathForResource:@"sample" ofType:@"xml"];
NSData *data = [NSData dataWithContentsOfFile:sampleXML];

// create a new SMXMLDocument with the contents of sample.xml
NSError *error;
SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error];

// check for errors
if (error) {
    NSLog(@"Error while parsing the document: %@", error);
    return;
}

// demonstrate -description of document/element classes
NSLog(@"Document:\n %@", document);

// Pull out the <books> node
SMXMLElement *books = [document.root childNamed:@"books"];

// Look through <books> children of type <book>
for (SMXMLElement *book in [books childrenNamed:@"book"]) {

    // demonstrate common cases of extracting XML data
    NSString *isbn = [book attributeNamed:@"isbn"]; // XML attribute
    NSString *title = [book valueWithPath:@"title"]; // child node value
    float price = [[book valueWithPath:@"price"] floatValue]; // child node value (converted)

    // show off some KVC magic
    NSArray *authors = [[book childNamed:@"authors"].children valueForKey:@"value"];

    NSLog(@"Found a book!\n ISBN: %@ \n Title: %@ \n Price: %f \n Authors: %@", isbn, title, price, authors);
}
 }

我已经尝试了很多小时的教程,最后我在我的app中使用这些代码得到了很好。但我需要从服务器导入xml文件......

2 个答案:

答案 0 :(得分:3)

显然,我不打算编写你需要的所有代码(Server Access + XML Parser + Protocols,至少有一个不错的架构),这不是博客。所以:

  1. 首先从服务器下载XML文件。您可以使用NSURLConnection,也可以使用第三方库(例如MKNetworKit)。
  2. 从服务器获取数据(NSData)后,您可以使用它填充解析器。
  3. 简而言之就是这样。只是一个指针:

    1. 请不要将您的XML Parser放在applicationDidFinishLaunching:内,这没有任何意义。如果您需要在applicationDidFinishLaunching:时使用它,它完全有效,请为XML Parser创建一个合适的类。

答案 1 :(得分:1)

嗯,它减少了两件事:获取XML字符串并解析它。为了获得xml,你必须简单地写下这样的东西:

NSError *error = nil; NSString *xmlString = [NSString stringWithContentsOfURL:[NSURL urlWithString:@"www.xxxxx.com/xxx.xml"] encoding:NSUTF8StringEncoding error:&error]

之后,将此字符串提供给解析器。据我所知,TBXML是最快的,而且易于使用。你可以从here获得它。

之后,您需要遍历XML的节点,这很容易,您可以找到很多示例。 Here's一些文档。

干杯!