标签: nsxmlparser

帮助解决NSXMLParser错误39:NSXMLParserAttributeNotStartedError

我一直在寻找大约两个小时,现在试图找出这个错误是什么以及如何解决它.Apple的文件很高兴地说

NSXMLParserAttributeNotStartedError属性未启动.适用于Mac OS X v10.3及更高版本.在NSXMLParser.h中声明.

但没有提供任何帮助.有人可以帮我从这里出去吗?非常感谢任何朝着正确方向的推动.

在viewDidLoad中,我有:

NSURL *xmlUrl = [NSURL fileURLWithPath:xmlFilepath];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:xmlUrl];
[xmlParser setDelegate:self];
[xmlParser setShouldResolveExternalEntities:NO];
BOOL success = [xmlParser parse];
Run Code Online (Sandbox Code Playgroud)

获取xml没问题,我可以成功读取直到根元素,然后它就会中断.

其余的相关代码如下:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
 if([elementName isEqualToString:@"foo"]) {
  foo = [[NSMutableArray alloc] init];
 } else if([elementName isEqualToString:@"bar"]) {
  bar = [[Bar alloc] init];
 }
}

- (void)parser:(NSXMLParser *)parser foundAttributeDeclarationWithName:(NSString *)attributeName forElement:(NSString *)elementName type:(NSString *)type defaultValue:(NSString *)defaultValue {
  if ([elementName isEqualToString:@"bar"]) {
  if ([attributeName isEqualToString:@"barAttrib1"]) …
Run Code Online (Sandbox Code Playgroud)

xml cocoa-touch nsxmlparser ipad

7
推荐指数
1
解决办法
1158
查看次数

为什么NSXMLParser在foundCharacters方法中拾取这个空格?

我正在学习如何NSXMLParser在iOS平台上使用API,到目前为止它非常易于使用.但是,我在foundCharacters方法中遇到了一个小问题.据我所知,它不应该拾取任何空格,因为该foundIgnorableWhitespace方法应该捕获它,但它看起来像.这是我的代码......

   - (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict 
{
    //We're at the start of a new data feed
    if([elementName isEqualToString:@"data"])
    {
        if(listOfTimes != nil)
            [listOfTimes release];

        listOfTimes = [[NSMutableArray alloc] init];
    }

    else if ( [elementName isEqualToString:@"start-valid-time"]) {
        currentElementType = kXMLElementTime;
        return;
    }

    else {
        currentElementType = kXMLElementOther;
    }
 //---------------------------------------------------------------------
 - (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
    {
       if(currentElementType == kXMLElementTime)
       {
           //We don't want anymore than three times
           if ([listOfTimes count] >= 3) …
Run Code Online (Sandbox Code Playgroud)

iphone nsxmlparser ipad ios

7
推荐指数
1
解决办法
3164
查看次数

什么是"PCDATA无效字符值11"错误?

我必须使用XML文件,但我没有得到所有项目,因为我的导航器中显示的此错误在文件内容之前.确切的错误是:

此页面包含以下错误:

第10行第4099行的错误:PCDATA无效字符值11以下是直到第一个错误的页面呈现.

我该怎么办 ?谢谢你的建议.

xml nsxmlparser pcdata evernote

7
推荐指数
1
解决办法
1万
查看次数

如何在ios中使用NSXMLParser解析此xml?

<root>
    <table name="radios">
        <column name="nameradio">Radio1</column>
        <column name="logo">http://app.syndicationradio.fr/demo/logo1.png</column>
        <column name="stream">http://cloud2.syndicationradio.fr:8020</column>
        <column name="twitter">http://www.twitter.com/#syndicationradio</column>
        <column name="facebook">http://www.facebook.com/syndicationradio</column>
        <column name="titre">http://app.syndicationradio.fr/demo/title.xml</column>
    </table>
    <table name="radios">
        <column name="nameradio">Radio2</column>
        <column name="logo">http://app.syndicationradio.fr/demo/logo1.png</column>
        <column name="stream">http://cloud2.syndicationradio.fr:8020</column>
        <column name="twitter">http://www.twitter.com/#syndicationradio</column>
        <column name="facebook">http://www.facebook.com/syndicationradio</column>
        <column name="titre">http://app.syndicationradio.fr/demo/title.xml</column>
    </table>
</root>
Run Code Online (Sandbox Code Playgroud)

现在请有人帮忙了解一下,如何在IOS中使用NSXMLParser或者任何其他xml解析器从xml数据中获取这些url TBXML

编辑:你也可以给我libxml这个xml解析器的例子.

提前致谢.

iphone nsxmlparser ios

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

如何使用NSXMLParser解析内部声明的XML实体引用

我有一个使用内部声明的实体的XML文件.例如:

<?xml version="1.0" encoding="UTF-8"?>

...

<!ENTITY my_symbol "my symbol value">

...

<my_element>
    <my_next_element>foo&my_symbol;bar</my_next_element>
</my_element>

...
Run Code Online (Sandbox Code Playgroud)

使用NSXMLParser类,我如何解析my_symbol实体引用?

从实验中,parser:foundInternalEntityDeclarationWithName:value:将为my_symbol具有值的实体声明调用委托方法"my symbol value".然后,当到达my_next_element元素时,NSXMLParser将调用parser:didStartElement:namespaceURI:qualifiedName:attributes:委托方法.

parser:didEndElement:namespaceURI:qualifiedName:调用之前</my_next_element>,parser:foundCharacters:将使用字符串调用委托方法两次:

  1. "foo"
  2. "bar"

my_symbol实体引用被忽略.为了解析实体引用需要什么?

编辑:

从DTD中删除ENTITY声明my_symbol将导致NSXMLParserUndeclaredEntityError.这表明当实体声明存在,然后引用时<my_next_element>,它就会被注意到.出于某种原因,它只是没有被解析为它所代表的字符串.

此外,如果&amp;在元素中使用,则解析器将正确地将其解析为,"&"并且在parser:foundCharacters:调用委托方法时将其作为字符串传递.

xml iphone cocoa objective-c nsxmlparser

6
推荐指数
1
解决办法
2514
查看次数

适用于iPhone的NSXMLParser内存分配效率

我最近一直在玩iPhone应用程序的代码来解析XML.坚持Cocoa,我决定使用NSXMLParser类.该应用程序将负责解析10,000多个"计算机",所有这些计算机都包含6个其他信息串.对于我的测试,我已经验证了XML的大小约为900k-1MB.

我的数据模型是通过唯一标识符将每台计算机保存在NSDictionary中.每台计算机也由NSDictionary代表信息.因此,在一天结束时,我最终得到一个包含10k其他NSDictionaries的NSDictionary.

我遇到的问题不是泄漏内存或高效的数据结构存储.当我的解析器完成后,分配的对象总量只会增加大约1MB.问题是当NSXMLParser运行时,我的对象分配高达13MB.我能理解2(一个用于我正在创建的对象,一个用于原始NSData)加上一个小工作空间,但13似乎有点高.我无法想象NSXMLParser效率低下.思考?

码...

开始解析的代码......

NSXMLParser *parser = [[NSXMLParser alloc] initWithData: data];
[parser setDelegate:dictParser];
[parser parse];
output = [[dictParser returnDictionary] retain];        
[parser release];
[dictParser release];
Run Code Online (Sandbox Code Playgroud)

而解析器的委托代码......

-(void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {

    if(mutableString)
    {
        [mutableString release];
        mutableString = nil;

    }

    mutableString = [[NSMutableString alloc] init];     

}

-(void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string { 
    if(self.mutableString)
    {

        [self.mutableString appendString:string];

    }
}

-(void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {

    if([elementName isEqualToString:@"size"]){
        //The initial key, tells me how many …
Run Code Online (Sandbox Code Playgroud)

iphone cocoa memory-management nsxmlparser

6
推荐指数
2
解决办法
2377
查看次数

如何在不同的类中设置委托

我正在使用解析xml文档的NSXMLParser.您必须设置每次解析器找到元素时我们将调用的委托.我看过的例子都将委托设置为创建的同一个类:

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

其他示例将委托设置为父级.如果我想要另一个类(与同一个类无关)来处理委托,该怎么办?这样做的语法是什么?

我做到了这一点,但它不起作用.

@interface Util : NSObject <NSXMLParserDelegate> {
    //Some code here
}

//functions for the delegate and the implementation on the Util.m
//.
//.
//.
Run Code Online (Sandbox Code Playgroud)

谢谢你的回答.

我忘了说在调用代表时我假设它会是这样的:

[parser setDelegate:Util];
Run Code Online (Sandbox Code Playgroud)

我认为这知道要为同一个类设置委托,消息是:

[parser setDelegate:self];
Run Code Online (Sandbox Code Playgroud)

delegates objective-c nsxmlparser

6
推荐指数
1
解决办法
4380
查看次数

无法将NSXMLParser委托设置为self

我正在尝试创建一个NSXMLParser并调用其委托方法.在将代表设置为self(下面的第2行)时,我收到警告Sending 'XMLParserViewController *' to a parameter of incompatible type 'id <NSXMLParserDelegate>'.我在这里缺少什么?

NSXMLParser *parser = [[NSXMLParser alloc]initWithData:data];
[parser setDelegate:self];
[parser parse];
[parser release];
Run Code Online (Sandbox Code Playgroud)

iphone debugging objective-c nsxmlparser ios

6
推荐指数
2
解决办法
5957
查看次数

iOS NSXMLPARSER在RSS Feed中解析媒体内容标记

我正在使用NSXMLParser来解析RSS提要.早些时候我正在使用来自cdata块的图片网址,但现在我遇到了一个内部有图片网址的Feed

<media:content url="http://cdn.example.com/wp-content/uploads/2013/10/article-2462931-18C5CBC000000578-776_634x452.jpg" medium="image"/>
Run Code Online (Sandbox Code Playgroud)

如何从此标记中选择图像网址?这是我想在didStartElement方法中使用但它无法正常工作:

if ([elementName isEqual:@"media:content"])
    {
        currentString = [[NSMutableString alloc] init];

        // Basically i need the image url string at this point             

        NSString *imageURLString = [self getFirstImageUrl:currentString];
        imageURL = [NSURL URLWithString:imageURLString];
        [self downloadThumbnails:imageURL];
    }
Run Code Online (Sandbox Code Playgroud)

如何从媒体内容标签中选择图片网址字符串?谢谢!

xml rss parsing nsxmlparser ios

6
推荐指数
1
解决办法
1017
查看次数

iOS8 NSXMLParser崩溃

我在NSXMLParser中崩溃了

*因未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因是:'NSXMLParser不支持可重入解析.'

这是我的代码

NSString *wrappedSnippet = [NSString stringWithFormat:@"<html>%@</html>", self.snippet];
NSXMLParser *parser = [[NSXMLParser alloc] initWithData:[wrappedSnippet dataUsingEncoding:NSUTF8StringEncoding]];
[parser setDelegate:self];
[parser parse];
Run Code Online (Sandbox Code Playgroud)

应用程序在最后一行崩溃.

请注意,iOS7上的一切都很完美!

nsxmlparser ios8

6
推荐指数
3
解决办法
6725
查看次数