首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用TouchXML解析NSString?

用TouchXML解析NSString?
EN

Stack Overflow用户
提问于 2011-06-04 14:18:21
回答 2查看 785关注 0票数 1

我正在尝试解析使用SOAP从WebService收到的字符串后面的thE。因为我无法解析从我的web服务接收的数据(我不知道为什么..请看这里,parsing XML using Soap Web Services)我正在将数据转换为NSString,然后使用TOUCHXML解析字符串

代码语言:javascript
复制
NSString *theXML = [[NSString alloc] 
                    initWithBytes: [webData mutableBytes] 
                    length:[webData length] 
                    encoding:NSUTF8StringEncoding];

我得到的字符串是

代码语言:javascript
复制
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

<s:Body>

<GetCategoryResponse xmlns="http://tempuri.org/">

<GetCategoryResult>

<Root>

<Record>

<catid>1</catid><catname>Hi</catname><catlogo>http://10.25.4.49/monsoonstore/Category/50X50.GIF</catlogo>

</Record>

</Root>

</GetCategoryResult>

</GetCategoryResponse>

</s:Body>

</s:Envelope>

由于我不能让任何解析器读取我从webservice获得的NSData,所以我将上面的字符串转换为以下字符串(即.这正是我需要的xml )

代码语言:javascript
复制
<Root><Record><catid>1</catid><catname>Hi</catname><catlogo>http://10.25.4.49/monsoonstore/Category/50X50.GIF</catlogo></Record></Root>

CXMLDocument *doc = [[CXMLDocument alloc] initWithXMLString:check options:0 error:nil];



  NSArray *items = [doc nodesForXPath:@"//Root" error:nil];




for (CXMLElement *item in items) 

{


NSLog(@"Root");

    NSArray *titles = [item elementsForName:@"Record"];

for(CXMLElement *title in titles) 
{
    NSLog(@"Record");

     break;
}

 NSArray *categories = [item elementsForName:@"catid"];

    for(CXMLElement *category in categories)
    {
        NSLog(@"catid");

        break;
    }


NSArray *artists = [item elementsForName:@"catname"];

    for(CXMLElement *artist in artists) 
    {
        NSLog(@"catname");

        break;
        }
.
.
.
.

调用Root日志和记录日志,而从不调用catid。我可能做错了什么??

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-04 14:31:00

我认为您是在记录下(而不是根目录下)搜索catid,所以请更改

代码语言:javascript
复制
 NSArray *categories = [item elementsForName:@"catid"];

代码语言:javascript
复制
NSArray *categories = [titles elementsForName:@"catid"];

我的意思是,在记录下搜索元素catid,而不是在根目录下。

我上面的代码可能会给你带来编译错误,因为我没有在TouchXML上工作过,但你知道我的意思。

票数 0
EN

Stack Overflow用户

发布于 2011-06-04 14:30:44

使用NSXMLParser,因为您指定需要一个可以由NSData直接创建的解析器。

NSXMLParser具有通过发送initWithData作为参数返回NSXMLParser实例的NSData。

代码语言:javascript
复制
- (id)initWithData:(NSData *)data

Parsing XML on the iPhone using NSXMLParser

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

https://stackoverflow.com/questions/6235124

复制
相关文章

相似问题

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