我知道有很多关于TBXML的问题,我已经尝试了很少的解决方案,但没有一个对我有效。我是个新手。
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfNewsFeedService xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<NewsFeedService>
<LngNewsItemID>1</LngNewsItemID>
<Contents>test</Contents>
<LngUserID>1</LngUserID>
<DteCreated>1/04/2014 12:00:00 a.m.</DteCreated>
<NewsReply>
<NewsFeedReplyService>
<lngNewsItemReplyID />
<LngNewsItemID>1</LngNewsItemID>
<ReplyContent>reply</ReplyContent>
<LngUserID>1</LngUserID>
<DteCreated>1/04/2014 12:00:00 a.m.</DteCreated>
</NewsFeedReplyService>
<NewsFeedReplyService>
<lngNewsItemReplyID />
<LngNewsItemID>1</LngNewsItemID>
<ReplyContent>reply2</ReplyContent>
<LngUserID>1</LngUserID>
<DteCreated>1/04/2014 12:00:00 a.m.</DteCreated>
</NewsFeedReplyService>
</NewsReply>
</NewsFeedService>
</ArrayOfNewsFeedService>我可以很好地从xml中读取“Contents”值,但是当我试图读取“NewsReply”和所有内部xml时,我遇到了问题。不太确定如何解决这个问题。任何帮助都将不胜感激。我已经试着解决这个问题两周多了。
提前感谢
编辑-道歉这里是我已经尝试过的代码。
NSString *theXML = [[NSString alloc] initWithBytes: [webData mutableBytes] length:[webData length] encoding:NSUTF8StringEncoding];
NSLog(@"%@", theXML);
TBXML * tbxml = [TBXML newTBXMLWithXMLString:theXML];
NSLog(@"%@", [TBXML elementName:tbxml.rootXMLElement]);
if (tbxml.rootXMLElement)
{
NSString *content = [self traverseElement:tbxml.rootXMLElement: @"Contents"];
UITextViewPost.text = content;
NSString *test = [self traverseElement:tbxml.rootXMLElement: @"NewsReply"];
NSLog(@"ReplyContent - %@", test);
TBXMLElement * elem_items = [TBXML childElementNamed:@"NewsFeedReplyService" parentElement:tbxml.rootXMLElement];
NSLog(@"elem_items - %@", elem_items);
NSMutableArray * array=[[NSMutableArray alloc]init];
while (elem_items !=nil)
{
NSMutableDictionary * dictionary=[[NSMutableDictionary alloc]init];
NSString * str_ParseData=[[NSString alloc]init];
TBXMLElement * elem_item = [TBXML childElementNamed:@"NewsFeedReplyService" parentElement:elem_items];
TBXMLElement * elem_itemid = [TBXML childElementNamed:@"LngUserID" parentElement:elem_item];
str_ParseData = [TBXML textForElement:elem_itemid];
[dictionary setObject:str_ParseData forKey:@"LngUserID"];
TBXMLElement * elem_itemname = [TBXML childElementNamed:@"ReplyContent" parentElement:elem_item];
str_ParseData = [TBXML textForElement:elem_itemname];
[dictionary setObject:str_ParseData forKey:@"ReplyContent"];
[array addObject:dictionary];
elem_items = [TBXML nextSiblingNamed:@"NewsFeedReplyService" searchFromElement:elem_items]; /// end node
NSLog(@"printing arrays - %@", str_ParseData);
}
}发布于 2014-04-20 07:43:32
我已经修好了。如果有人想解决他们的问题,我使用了以下代码。
- (void) traverseElement:(TBXMLElement *)element {
do {
if (element->firstChild)
[self traverseElement:element->firstChild];
if ([[TBXML elementName:element] isEqualToString:@"Record"]) {
TBXMLElement *destination = [TBXML childElementNamed:@"Destination" parentElement:element];
TBXMLElement *status = [TBXML childElementNamed:@"Status" parentElement:element];
TBXMLElement *guid = [TBXML childElementNamed:@"GUID" parentElement:element];
TBXMLElement *dateSub = [TBXML childElementNamed:@"DateSubmitted" parentElement:element];
TBXMLElement *dateToSend = [TBXML childElementNamed:@"DateToSend" parentElement:element];
TBXMLElement *dateSent = [TBXML childElementNamed:@"DateSent" parentElement:element];
TBXMLElement *dateReceived = [TBXML childElementNamed:@"DateReceived" parentElement:element];
TBXMLElement *message = [TBXML childElementNamed:@"Message" parentElement:element];
TBXMLElement *id = [TBXML childElementNamed:@"ID" parentElement:element];
[records addObject:[NSArray arrayWithObjects:
[TBXML textForElement:destination],
[TBXML textForElement:status],
[TBXML textForElement:guid],
[TBXML textForElement:dateSub],
[TBXML textForElement:dateToSend],
[TBXML textForElement:dateSent],
[TBXML textForElement:dateReceived],
[TBXML textForElement:message],
[TBXML textForElement:id],nil]];
}
} while ((element = element->nextSibling));}在此之后,只需在代码中使用调用函数来填充数组。
另外,请确保您更改了我在上面发布的字段名称。
谢谢
https://stackoverflow.com/questions/23165547
复制相似问题