首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TBXML和子元素

TBXML和子元素
EN

Stack Overflow用户
提问于 2014-04-19 11:43:49
回答 1查看 168关注 0票数 1

我知道有很多关于TBXML的问题,我已经尝试了很少的解决方案,但没有一个对我有效。我是个新手。

代码语言:javascript
复制
<?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时,我遇到了问题。不太确定如何解决这个问题。任何帮助都将不胜感激。我已经试着解决这个问题两周多了。

提前感谢

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

代码语言:javascript
复制
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);

    }

}
EN

回答 1

Stack Overflow用户

发布于 2014-04-20 07:43:32

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

代码语言:javascript
复制
- (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));}

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

另外,请确保您更改了我在上面发布的字段名称。

谢谢

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23165547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档