discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: NSXML* classes


From: Fred Kiefer
Subject: Re: NSXML* classes
Date: Sun, 26 Feb 2012 21:03:24 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:10.0.2) Gecko/20120215 Thunderbird/10.0.2

On 26.02.2012 18:58, Ivan Vučica wrote:
On Wed, Feb 22, 2012 at 17:32, Gregory Casamento
<address@hidden>wrote:

Ivan,

I will have some time to look into the cause tonight.

GC


Hi Gregory,

you've talked about my use of fast iteration making it hard for you to use
SlaveOPML for debugging. I've found my few uses using regex and have pushed
the changes. As a reminder, here is the code:
   http://bitbucket.org/ivucica/opml/

Currently, when creating a new node in a blank file, [NSXMLNode
elementWithName:stringValue:] seems to be recursing incessantly. An excerpt
of the backtrace:
#2157 0x00ca1957 in +[NSXMLNode elementWithName:stringValue:]
(self=0xee6cd0,
     _cmd=0xee7ab0, name=0x8072288, string=0x824ccbc) at NSXMLNode.m:751
#2158 0x00ca1957 in +[NSXMLNode elementWithName:stringValue:]
(self=0xee6cd0,
     _cmd=0xee7ab0, name=0x8072288, string=0x824ccbc) at NSXMLNode.m:751
#2159 0x00ca1957 in +[NSXMLNode elementWithName:stringValue:]
(self=0xee6cd0,
     _cmd=0xee7ab0, name=0x8072288, string=0x824ccbc) at NSXMLNode.m:751

This patch fixes this trivial lapsus calami:
Index: Source/NSXMLNode.m
===================================================================
--- Source/NSXMLNode.m (revision 34818)
+++ Source/NSXMLNode.m (working copy)
@@ -748,7 +748,7 @@
  {
    NSXMLElement *e;

-  e = [self elementWithName: name stringValue: string];
+  e = [[[NSXMLElement alloc] initWithName: name stringValue: string]
autorelease];
    return e;
  }

Thank you very much, I committed this patch.

However, looks like an XPath query called on an NSXMLNode still doesn't
return results as under OS X. That is, having called:

   NSArray *opmlNodes = [self nodesForXPath:@"./opml" error:nil];
   [self setOpmlRoot:[opmlNodes objectAtIndex:0]];

with self being a subclass of NSXMLDocument, and thus getting the root
node, the following call does not return the<body/>  subnode of the<opml/>
root node, instead returning an array with zero entries:

   bodyNodes = [_opmlRoot nodesForXPath:@"./body" error:nil];

Looking at execute_xpath() in NSXMLNode.m, I must admit I have no idea what
may be going wrong.

If anyone wants to debug using my code, feel free to focus on the following
files that actually deal with the data model:
OPMLOutline.h
OPMLOutline.m
OPMLOutline+Private.h
OPMLOutlineXMLElement.h
OPMLOutlineXMLElement.m

I just downloaded that project and will test next.

Fred



reply via email to

[Prev in Thread] Current Thread [Next in Thread]