0

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

- (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);
}
 }

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

4

2 回答 2

3

显然,我不会编写您需要的所有代码(服务器访问 + XML 解析器 + 协议,至少要有一个体面的架构),这不是博客。所以:

  1. 首先从服务器下载 XML 文件。您可以使用NSURLConnection,也可以使用 3rd 方库(例如MKNetwKit)。
  2. 从服务器获取数据 ( NSData) 后,您可以用它填充您的解析器。

简而言之就是这样。只是一个指针:

  1. 请不要将您的 XML Parser 放入applicationDidFinishLaunching:其中,这没有任何意义。如果您需要在applicationDidFinishLaunching:完全有效的情况下使用它,请为 XML Parser 创建一个适当的类。
于 2012-07-04T07:32:21.417 回答
1

好吧,它减少了两件事:获取 XML 字符串并解析它。为了获取 xml ,您必须简单地编写如下内容:

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

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

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

干杯!

于 2012-07-04T07:39:07.107 回答