1

我知道那里有很多关于 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 时遇到问题。不太清楚如何解决。任何帮助将不胜感激。我已经尝试解决这个问题超过 2 周了。

提前致谢

编辑-在这里道歉是我尝试过的代码。

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);

    }

}
4

1 回答 1

0

我已经修好了。如果有人想解决他们的问题,我使用了以下代码。

- (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));}

之后,只需在代码中调用函数来填充数组。

还要确保您更改了我上面发布的字段名称。

谢谢

于 2014-04-19T23:43:32.260 回答