标签: nsxmlparser

NSXMLParser粉碎变音符号(ä,ö,ü)

我使用NSXMLParser来解析服务器的XML文档.它们编码为UTF8.我的问题是,NSXMLParser在变音符号(ä,ö,ü)中断并启动一个新元素.

例如:

Lösen - NSXMLParser ---> L +ösen

我如何让NSXMLParser像其他任何单词一样完整地阅读我的变音单词.

问候

xml iphone cocoa-touch nsxmlparser

3
推荐指数
1
解决办法
1831
查看次数

NSXMLParser rss发出NSXMLParserInvalidCharacterError

NSXMLParserInvalidCharacterError#9

这是我在遇到一个奇怪的角色时得到的错误(比如复制并从单词粘贴到网络表单的引号,最终在Feed中).我正在使用的Feed没有给出编码,他们没有希望让他们改变它.这是我在标题中得到的全部内容:

<?xml version ="1.0"?> <rss version ="2.0">

解析Feed时,我该怎么办非法字符?我在解析之前扫描数据吗?我在API中缺少什么?有人处理过这个问题吗?

iphone rss nsxmlparser

3
推荐指数
1
解决办法
2703
查看次数

什么有名称空间与XML有关?

这里让我困惑的是:

NSXMLParser方法具有namespaceURI属性:

- (void)parser:(NSXMLParser *)parser 
 didEndElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI 
 qualifiedName:(NSString *)qName
Run Code Online (Sandbox Code Playgroud)

从文档中我无法弄清楚它们的意思是"命名空间".有人可以用一个例子来解释XML中的命名空间是什么以及我为什么要这样做?

编辑:是的,我注意到维基百科.但它又令人困惑.将一个单独的名称空间声明放在XML文件的顶部是有意义的

xmlns:xhtml="http://www.w3.org/1999/xhtml"
Run Code Online (Sandbox Code Playgroud)

?? 再一次,这只是毫无意义.维基百科没有任何有用的例子可以获得它,为什么我真的想要名称空间,更重要的是 - 它在XML文件中看起来如何.他们说这是为了解决多个同名元素(如ID)的歧义,但没有例子说明多个命名空间如何解决这个问题.

xml iphone namespaces nsxmlparser

3
推荐指数
1
解决办法
1273
查看次数

使用NSXMLParser将XML解析为Core Data存储时的内存构建

我的应用程序有一个问题,它采用XML提要,解析它,并将结果存储到Core Data中.

问题仅发生在应用程序的第一次运行时,当商店中没有任何内容并且整个订阅源被解析和存储时.问题只是内存分配累积起来,直到50%的尝试崩溃应用程序,通常大约10Mb.分配的对象似乎是CFData(存储)对象,我似乎无法找到任何强制释放它们的方法.如果你可以让它运行一次并成功完成解析并保存到核心数据,那么每次后续启动都没问题,内存使用量永远不会超过2.5Mb

这是我们进入代码之前的一般方法:将feed添加到NSData对象中.使用NSFileManager将其存储为文件.从文件路径创建URL并将其提供给parseXMLFile:方法.代表是自我.在到达解析器时:didStartElement:namespaceURI:qualifiedName:attributes:我创建一个字典来捕获我需要的标签中的数据.解析器:foundCharacters:方法将标记的内容保存到字符串解析器:didEndElement:...方法然后确定标记是否是我们需要的东西.如果是这样的话,它会将它添加到字典中,否则它会忽略它.一旦它到达项目的末尾,它就会调用一种方法将其添加到核心数据存储中.

通过查看示例代码和其他人发布的帖子,似乎一般方法中没有任何错误.

代码如下,它来自视图控制器的更大上下文,但我省略了任何不直接相关的内容.

就我已经尝试的事情而言:feed是XML,没有转换为JSON的选项,抱歉.这不是在共享文档区域中找到并存储的图像.

关于它可能是什么的线索:这是我从Instruments获得的最大数量最多的东西(每件256k):

对象地址类别创建时间实时大小负责图书馆负责人

1 0xd710000 CFData(store)16024774912•262144 CFNetwork URLConnectionClient :: clientDidReceiveData( _CFData const*,URLConnectionClient :: ClientConnectionEventQueue*)

这是代码,为内容的匿名编辑;)

-(void)parserDidStartDocument:(NSXMLParser *)feedParser { }

-(void)parserDidEndDocument:(NSXMLParser *)feedParser { }

-(void)parser:(NSXMLParser *)feedParser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict
{
    eachElement = elementName;
    if ( [eachElement isEqualToString:@"item" ] )
    {
        //create a dictionary to store each item from the XML feed
        self.currentItem = [[[NSMutableDictionary alloc] init] autorelease];
    }
}


-(void)parser:(NSXMLParser *)feedParser foundCharacters:(NSString *)feedString 
{
    //Make sure that tag content doesn't …
Run Code Online (Sandbox Code Playgroud)

xml core-data objective-c nsxmlparser ios

3
推荐指数
1
解决办法
1954
查看次数

NSXMLParser:如何显示从webservice获得的响应?

我正在使用NSXMLParser来解析从我的webservice中获取的数据.但是当我从服务器获取数据时.

它给了我错误代码5.

我无法看到来自Web服务的响应.

我用

 NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:theURL];
Run Code Online (Sandbox Code Playgroud)

但是当我写作时,我无法在控制台中看到响应 NSLog(@"%@",parser);

如何显示从我的Web服务获得的响应?

xml iphone objective-c nsxmlparser ios4

3
推荐指数
1
解决办法
1477
查看次数

内存泄漏在NSConcreteMapTable中使用NSXMLParser

我正在使用NSXMLParser,我得到一个指向NSConcreteMapTable的内存泄漏,无论是什么:

在此输入图像描述

从我的AppDelegate.m调用解析器时,在这行代码中发生泄漏:

在此输入图像描述

我找了一个解决方案,看不出我做错了什么.这是我的代码.任何帮助是极大的赞赏.LQ

// * * * XMLParser.h * * *  

#import <Foundation/Foundation.h>

@protocol NSXMLParserDelegate;

@interface XMLParser : NSObject 
<NSXMLParserDelegate>
{
    NSMutableArray  *xmlArray;
    BOOL        storingCharacters;
    float       xmlDataVersion;
}

@property (nonatomic, retain) NSMutableArray *xmlArray;
@property (nonatomic)  BOOL storingCharacters;
@property (nonatomic, assign) float xmlDataVersion;

-(BOOL)parseXMLFileAtURL:(NSURL *)URL parseError:(NSError **)error;

@end

// * * * XMLParser.m * * *

#import "XMLParser.h"

@implementation XMLParser

@synthesize xmlArray;
@synthesize storingCharacters;
@synthesize xmlDataVersion;

- (BOOL)parseXMLFileAtURL:(NSURL *)URL parseError:(NSError **)error {

    BOOL result = YES;

    if (xmlArray == nil) { …
Run Code Online (Sandbox Code Playgroud)

xcode memory-leaks nsxmlparser

3
推荐指数
1
解决办法
1136
查看次数

iOS:NSXMLParser获取属性

我是新手,我正在尝试阅读RSS提要,到目前为止一切都很好.我是这样做的:

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
  if ([elementName isEqualToString:@"item"]) {
    [item setObject:currentTitle forKey:@"title"];
    [item setObject:currentLink forKey:@"link"];
    [item setObject:currentSummary forKey:@"summary"];
    [item setObject:currentDate forKey:@"date"];
    [item setObject:currentImage forKey:@"enclosure"];

    [stories addObject:[item copy]];
    NSLog(@"adding story: %@", currentTitle);
  }
}
Run Code Online (Sandbox Code Playgroud)

问题在于圈地.在XML中看起来像这样:

<enclosure length="150" url="urltoimage.jpg" type="image/jpeg" />
Run Code Online (Sandbox Code Playgroud)

如何从我的函数中获取该元素的url属性?

编辑 XML看起来像这样:

<item>
    <title>...</title>
    <link>...</link>
    <description>...</description>
    <pubDate>...</pubDate>
    <enclosure length="150" url="urltoimage.jpg" type="image/jpeg" />
</item>
Run Code Online (Sandbox Code Playgroud)

我的foundCharacters函数看起来像这样:

- (void)parser: (NSXMLParser *)parser foundCharacters:(NSString *)string {
  if ([currentElement isEqualToString:@"title"]) {
    [currentTitle appendString:string];
  } else if ([currentElement isEqualToString:@"link"]) …
Run Code Online (Sandbox Code Playgroud)

xcode nsxmlparser ios5

3
推荐指数
2
解决办法
5598
查看次数

如何使用特殊字符对字符串进行编码,该字符串将被发布到URL?Objective-C的

目前我有一个字符串,我想POST到URL.

除非遇到像"&"和"?"这样的特殊字符,否则它的效果非常好.它不会发布之后发布的任何数据.例如,如果我有一个字符串"我是什么东西?",它只会POST"我是某种东西".至于"?",它会在发布后转换为"2".

reason = 'What see see! Are you sure'2''
Run Code Online (Sandbox Code Playgroud)

我很确定它必须与编码有关,因为我可以看到"我是什么东西?" 因为它就在我设置编码之前:

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding];
Run Code Online (Sandbox Code Playgroud)

我也试过下面的编码没有成功:

NSData *postData = [post dataUsingEncoding:NSUTF8StringEncoding];
NSData *postData = [post dataUsingEncoding:NSNonLossyASCIIStringEncoding];
NSData *postData = [post dataUsingEncoding:NSISOLatin1StringEncoding];
Run Code Online (Sandbox Code Playgroud)

以下是我从postData开始的代码:

NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding];
    //NSLog(@"PostData: %@", postData);
    NSString *check = [[NSString alloc] initWithData:postData encoding:NSASCIIStringEncoding];
    NSLog(@"check string = %@", check);
    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:strURLQueryString]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:postData];
    NSURLResponse *response;
    NSError …
Run Code Online (Sandbox Code Playgroud)

objective-c nsxmlparser ios

3
推荐指数
1
解决办法
4888
查看次数

在Swift中使用NSXMLParser时访问元素的值

我试图解析http://apps.wku.edu/iwku/maps/buildings/data/SouthCampus-Buildings.xml上的XML

在Swift Playground中使用以下代码

import UIKit

var str = "Hello, playground"

class Parse: NSObject, NSXMLParserDelegate{

func beginParse(){        
    let url = NSURL(string: "http://apps.wku.edu/iwku/maps/buildings/data/SouthCampus-Buildings.xml")
    var xml = NSXMLParser(contentsOfURL: url)

    xml?.delegate = self
    xml?.parse()
}

func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: NSDictionary!) {
    println("Element's name is \(elementName)")
    println("Element's attributes are \(attributeDict)")
    }
}

var instance = Parse()

instance.beginParse()
Run Code Online (Sandbox Code Playgroud)

不幸的是我在控制台中的输出如下所示: 在此输入图像描述

为什么我的attributeDict看起来是空的,如何访问与这些元素相关的值?

xml nsxmlparser xml-parsing swift

3
推荐指数
1
解决办法
6479
查看次数

Objective-C代理:让我调用另一个解析XML的类.需要知道什么时候外部完成

我有一个类调用另一个类从URL解析(NSXMLParse).现在我想让这个调用它的类知道它什么时候完成,这样我就可以填充UI了.我猜一个代表将是要走的路,但我从来没有使用过一个,需要一些指导,如何这将是有线的.

谢谢

delegation objective-c nsxmlparser iphone-sdk-3.0

2
推荐指数
1
解决办法
1555
查看次数