I'm trying to use XPath to parse an XML document. One of my NSXMLElement's looks like the following, hypothetically speaking:
<foo bar="yummy">
I'm trying to get the value for the attribute bar, however any interpretation of code I use, gives me back bar="woo", which means I need to do further string processing in order to obtain access to woo and woo alone.
Essentially I'm doing something like
NSArray *nodes = [xmlDoc nodesForXPath:@"foo/@bar" error:&error];
xmlElement = [nodes objectAtIndex:0];
Is there anyway to write the code above to just give me yummy, versus bar="yummy" so I can relieve myself of parsing the string?
Thanks.
Assuming TouchXML is being used, is there still anyway to obtain similar results? As in grabbing just the value for the attribute, without the attribute="value"? That results in then further having to parse the string to get the value out.
The TouchXML API is supposed to be an exact duplicate of Apple's NSXML implementation, so it should be the same except you'll replaces all NS-Method's with C-Methods.
The TouxhXML classes map directly to the NSXML classes. NSXMLNode -> CXMLNode, NSXMLDocument -> CXMLDocument, NSXMLElement -> CXMLElement. For obvious reasons you can't mix and match NSXML and TouchXML classes.
The TouxhXML methods map directly to NSXML methods as well, but only a small subset of methods are supported. Constant and enum names are almost equivalent (CXML... vs NSXML...) but constant values will not be equival
reference
Using either the regular Apple classes or the TouchXML framework the following code will give you just the string "yummy" for your example.
NSArray *nodes = [xmlDoc nodesForXPath:@"./foo/@bar" error:&err];
NSString *value = [[nodes objectAtIndex:0] stringValue];
Good Luck,
Brian G
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With