• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: referencing XML Data
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: referencing XML Data


  • Subject: Re: referencing XML Data
  • From: Nathan Kinsinger <email@hidden>
  • Date: Tue, 16 Sep 2008 15:24:39 -0600


On Sep 16, 2008, at 2:15 PM, Amy Heavey wrote:
I've just tried this again, I just changed the start:

void import( NSArray *array ) {

and it is all called by:

import(custNodes);

I assume that means you did something like:

	NSArray *custNodes = [custdoc nodesForXPath:@".//customer" error:nil];


so I beleive this line is uneccessary:
NSXMLDocument *custdoc = [[NSXMLDocument alloc] initWithData:[NSData dataWithContentsOfFile:@"/Users/nathan/Desktop/xml testing/ customer.xml"] options:0 error:nil];

Yes, I just needed that to get the XML file for testing.

but I still get 3 errors,

I'm using XCode 2.4.1 and wanting this to work on 10.4 systems.

Sorry, the for-in loop I was using is for 10.5. NSEnumerator (as you are using below) is correct for your case.



I've managed to get this to nearly work:

void import( NSArray *array ) {

NSEnumerator *enumerator = [array objectEnumerator];
id obj;

while ( obj = [enumerator nextObject] ) {

//printf( "Customer: %s\n", [[obj description] cString] );

NSArray *customerArray = [custdoc nodesForXPath:@".//customer" error:nil];

I think your array already has the .//customer data in it, don't need to get it again.


		 //if ( [customerArray count]) {
			//for (NSXMLNode *customerNode in customerArray){
		NSLog(@"First name = %@", 0);

Do you really want to print 0 here?

customerNode=[custNodes objectAtIndex:0];

This will keep getting the first customer out of the customerArray.


NSArray *firstNameArray = [customerNode nodesForXPath:@".// first_name" error:nil];
//if ([firstNameArray count]) {
NSString *firstNameString = [[firstNameArray objectAtIndex:0] stringValue];
NSLog(@"First name = %@", firstNameString);
//}
//}
//}


	}
}



As far as your loop goes, obj is the item in each iteration of the loop, so use that to get the current customer item from the array.

So, getting rid of some other stuff that leaves:

void import( NSArray *array ) {
NSEnumerator *enumerator = [array objectEnumerator];
id obj;

while ( obj = [enumerator nextObject] ) {
NSArray *firstNameArray = [obj nodesForXPath:@".//first_name" error:nil];
NSString *firstNameString = [[firstNameArray objectAtIndex:0] stringValue];
NSLog(@"First name = %@", firstNameString);
}
}


This assumes you already did the .//customer XPath call and passed that in as the array.

--Nathan

_______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


References: 
 >referencing XML Data (From: Amy Heavey <email@hidden>)
 >Re: referencing XML Data (From: Nathan Kinsinger <email@hidden>)
 >Re: referencing XML Data (From: Amy Heavey <email@hidden>)
 >Re: referencing XML Data (From: "Sherm Pendley" <email@hidden>)
 >Re: referencing XML Data (From: Amy Heavey <email@hidden>)
 >Re: referencing XML Data (From: Nathan Kinsinger <email@hidden>)
 >Re: referencing XML Data (From: Amy Heavey <email@hidden>)

  • Prev by Date: Re: Core data "grand-children" list
  • Next by Date: Re: Core Data and ordered relationships
  • Previous by thread: Re: referencing XML Data
  • Next by thread: Re: referencing XML Data
  • Index(es):
    • Date
    • Thread