TouchXML 空节点值
我正在尝试为 iPhone 应用程序(IOS5 xcode4.2)解析一些 XML,我已经放弃了 NSXMLParser,因为它很难到达任何地方。所以我选择了 touchXML,我能够从 Web 服务器中提取远程 XML 文件并查看节点名称,但这些节点的值是空白的请参阅下面的代码和示例 xml(我已经取出了很多数据)但是我做什么我想做的是获取一个 NSArray 或 NSDirectory ,其中包含所有统计数据的字符名称和子数组或 NSDirectory ,它们的键是统计数据的名称,值是值
<apiresponse>
<character name="testname" ....>
<vocation name="testvocation" ....>...</vocation>
<stats>
<stat name="health" value="1234"/>
<stat name="power" value="4321"/>
</stats>
<equipment>
</equipment>
</character>
// Create a new xmlParser object based on the TouchXML "CXMLDocument" class, this is the
// object that actually grabs and processes the xml data
CXMLDocument *xmlParser = [[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil];
// Create a new Array object to be used with the looping of the results from the xmlParser
NSArray *resultNodes = NULL;
// Set the resultNodes Array to contain an object for every instance of an node in our xml
resultNodes = [xmlParser nodesForXPath:@"apiresponse/character" error:nil];
// Loop through the resultNodes to access each items actual data
for (CXMLElement *resultElement in resultNodes) {
// Create a temporary MutableDictionary to store the items fields in, which will eventually end up in stats
NSMutableDictionary *stat = [[NSMutableDictionary alloc] init];
// Create a counter variable as type "int"
int counter;
// Loop through the children of the current node
for(counter = 0; counter < [resultElement childCount]; counter++) {
// Add each field to the stat Dictionary with the node name as key and node value as the value
[stat setObject:[[resultElement childAtIndex:counter] stringValue] forKey: [[resultElement childAtIndex:counter] name]];
}
// Add the stat to the global stats Array so that the view can access it.
[self.stats addObject:[stat copy]];
}
}
NSLog
2012-01-25 08:27:08.890 test[12815:f803] (
{
equipment = "";
stats = "";
vocation = "";
}
)
I am trying to parse some XML for an iphone app(IOS5 xcode4.2) I had given up with NSXMLParser as it was a pain to get anywhere. So I went with touchXML, I am able to pull my remote XML file from a web server and see node names but the values of those nodes are blank See code below and sample xml(i have taken out a lot of data) But what i am trying to do is get a NSArray or NSDirectory with the name of the character and subarray or NSDirectory of all the stats the they key being the name of the stat and the value as the value
<apiresponse>
<character name="testname" ....>
<vocation name="testvocation" ....>...</vocation>
<stats>
<stat name="health" value="1234"/>
<stat name="power" value="4321"/>
</stats>
<equipment>
</equipment>
</character>
// Create a new xmlParser object based on the TouchXML "CXMLDocument" class, this is the
// object that actually grabs and processes the xml data
CXMLDocument *xmlParser = [[CXMLDocument alloc] initWithContentsOfURL:url options:0 error:nil];
// Create a new Array object to be used with the looping of the results from the xmlParser
NSArray *resultNodes = NULL;
// Set the resultNodes Array to contain an object for every instance of an node in our xml
resultNodes = [xmlParser nodesForXPath:@"apiresponse/character" error:nil];
// Loop through the resultNodes to access each items actual data
for (CXMLElement *resultElement in resultNodes) {
// Create a temporary MutableDictionary to store the items fields in, which will eventually end up in stats
NSMutableDictionary *stat = [[NSMutableDictionary alloc] init];
// Create a counter variable as type "int"
int counter;
// Loop through the children of the current node
for(counter = 0; counter < [resultElement childCount]; counter++) {
// Add each field to the stat Dictionary with the node name as key and node value as the value
[stat setObject:[[resultElement childAtIndex:counter] stringValue] forKey: [[resultElement childAtIndex:counter] name]];
}
// Add the stat to the global stats Array so that the view can access it.
[self.stats addObject:[stat copy]];
}
}
NSLog
2012-01-25 08:27:08.890 test[12815:f803] (
{
equipment = "";
stats = "";
vocation = "";
}
)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了从节点中提取信息,您需要使用
- (CXMLNode *)attributeForName:(NSString *)name
。我修改了您的代码以打印出所有所需的节点信息:来自 NSLog:
In order to pull out information from the node, you'll need to use
- (CXMLNode *)attributeForName:(NSString *)name
. I've modified your code to print out all of the desired node information:From NSLog: