TBXML XML格式
问题描述:
我已经知道TBXML如何解析它在我的Xcode项目。但是我被困在一个我不太了解的XML结构中。TBXML XML格式
这是XML结构:
<CurDate Dates="27.07.2012" Date="07/27/2012">
<Currency Kod="USD" CurrencyCode="USD">
<Unit>1</Unit>
<Name>AMERICA</Name>
<CurrencyName>US DOLLAR</CurrencyName>
<ForexBuying>1.81</ForexBuying>
<ForexSelling>1.8187</ForexSelling>
</Currency>
</CurDate>
我想在这个XML结构的帮助。我的代码看起来像:
TBXMLElement *elementName = [TBXML childElementNamed:@"Currency" parentElement:element];
TBXMLElement *altinTemp = [TBXML childElementNamed:@"CurrencyName" parentElement:elementName];
这是我的方式来获取我的XML的CurrencyName,但我得到一个错误。见代码:
+ (TBXMLElement*) childElementNamed:(NSString*)aName parentElement:(TBXMLElement*)aParentXMLElement{
TBXMLElement * xmlElement = aParentXMLElement->firstChild;
const char * name = [aName cStringUsingEncoding:NSUTF8StringEncoding];
while (xmlElement) {
if (strlen(xmlElement->name) == strlen(name) && memcmp(xmlElement->name,name,strlen(name)) == 0) {
return xmlElement;
}
xmlElement = xmlElement->nextSibling;
}
return nil;
}
这是我得到一个错误。错误是“主题1:!EXC_BAD_ACCESS(代码= 2,地址= 0x10),以
任何答复,将好的给我看
答
我相信你想是这样的
NSError *error = nil;
TBXML* tbxml = [TBXML tbxmlWithXMLString:@"<CurDate Dates='27.07.2012' Date='07/27/2012'><Currency Kod='USD' CurrencyCode='USD'><Unit>1</Unit><Name>AMERICA</Name><CurrencyName>US DOLLAR</CurrencyName><ForexBuying>1.81</ForexBuying><ForexSelling>1.8187</ForexSelling></Currency></CurDate>" error:&error];
if (error) {
NSLog(@"%@ %@", [error localizedDescription], [error userInfo]);
} else {
// If TBXML found a root node, process element and iterate all children
if (tbxml.rootXMLElement){
TBXMLElement *element = tbxml.rootXMLElement;
if ([TBXML childElementNamed:@"Currency" parentElement:element]) {
element = element->firstChild;
do{
TBXMLElement *altinTemp = [TBXML childElementNamed:@"CurrencyName" parentElement:element];
NSString *currencyName = [TBXML textForElement:[TBXML childElementNamed:@"CurrencyName" parentElement:element]];
NSLog(@"%@",currencyName);
}while ((element = element->nextSibling));
error = nil;
}
}
}
一个替代到
childElementNamed: parentElement:
是
childElementNamed: parentElement: error:
它允许你处理无节点(我认为你有)。错误:也可以添加到大多数TBXML类函数中,它会削减性能,所以最好仅用于调试或节点/值可能存在或不存在的时间。
请将完整的错误消息添加到您的问题。 – Codo 2012-07-28 18:57:44
我在上面添加了错误消息... – BlackJack 2012-07-28 19:20:13
修改后的问题现在显示完整的错误消息。但它不再说明它出现在哪一行。无论如何,这是一个空指针访问。这意味着参数* aParentXMLElement *被传递为零。所以错误的真正来源甚至更早。但从你问题中的信息来看,我无法分辨。 – Codo 2012-07-28 22:04:17