Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo



Le 13/3/16 18:46, Tudor Girba a écrit :

Hi,

I did OPAX :).


:)
So I'm doing a pass and cleaned it.
I created a small builder to generate subclasses and tags. I will 
release it soon.

I will play with the FILMS xml to understand what can be a solution.

Then after I will check a bit more the pluggable.


At one point there was an effort around NodeFactory, and we chose to improve 
that one.

Cheers,
Doru


On Mar 13, 2016, at 4:57 PM, stepharo  wrote:

So I wonder why Fabrizio did OPAX do you have an idea?
You get a simple tree but it is worth?
I will finish my improvement on OPAX.

Stef

This class is a pluggable factory that can map elements to different XMLElement 
subclasses based on the name and namespace information of those elements. You 
have to create an instance, configure it to handle certain elements with 
certain classes, and then inject your instance into a DOM parser using 
#nodeFactory: before parsing. Here is an example of its use:

doc := (XMLDOMParser on: someXML)
nodeFactory:
(XMLPluggableElementFactory new
elementClass: GenericElement;
handleElement: 'user' withClass: UserElement;
handleElement: 'report' withClass: ReportElement;
handleElement: 'report' namespaceURI: 'urn:specialreprot' 
withClass: SpecialReportElement)
parseDocument.

The #handleElementsMatchingClass*: forms try to match elements to the specified classes 
based on the names of those classes when stripped of any prefix (like XML) and 
"Element" suffix and converted to both camel case and a hyphenated form. So 
this:
XMLPluggableElementFactory new
handleElementsMatchingClass: MYRootUserElement

will handle 'rootUser' and 'root-user' elements with the MYRootUserElement 
class.


--
www.tudorgirba.com
www.feenk.com

"Next time you see your life passing by, say 'hi' and get to know her."











Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread Tudor Girba
Hi,

I did OPAX :). At one point there was an effort around NodeFactory, and we 
chose to improve that one.

Cheers,
Doru

> On Mar 13, 2016, at 4:57 PM, stepharo  wrote:
> 
> So I wonder why Fabrizio did OPAX do you have an idea?
> You get a simple tree but it is worth?
> I will finish my improvement on OPAX.
> 
> Stef
> 
> This class is a pluggable factory that can map elements to different 
> XMLElement subclasses based on the name and namespace information of those 
> elements. You have to create an instance, configure it to handle certain 
> elements with certain classes, and then inject your instance into a DOM 
> parser using #nodeFactory: before parsing. Here is an example of its use:
> 
>doc := (XMLDOMParser on: someXML)
>nodeFactory:
>(XMLPluggableElementFactory new
>elementClass: GenericElement;
>handleElement: 'user' withClass: UserElement;
>handleElement: 'report' withClass: ReportElement;
>handleElement: 'report' namespaceURI: 'urn:specialreprot' 
> withClass: SpecialReportElement)
>parseDocument.
> 
> The #handleElementsMatchingClass*: forms try to match elements to the 
> specified classes based on the names of those classes when stripped of any 
> prefix (like XML) and "Element" suffix and converted to both camel case and a 
> hyphenated form. So this:
>XMLPluggableElementFactory new
>handleElementsMatchingClass: MYRootUserElement
>
> will handle 'rootUser' and 'root-user' elements with the MYRootUserElement 
> class.
> 

--
www.tudorgirba.com
www.feenk.com

"Next time you see your life passing by, say 'hi' and get to know her."







Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo



Le 13/3/16 14:33, Tudor Girba a écrit :

XPath is better than Pastell. That is why in Moose we now have XPath.\


Yes this is my impression and I checked the implementation and there is 
only one class

extending XPath.

Stef


Doru


On Mar 13, 2016, at 1:49 PM, stepharo  wrote:

Alex

I saw that Pastell is only tagged for Pharo30 and has not metadata.
It would be good to revise it.

Stef


--
www.tudorgirba.com
www.feenk.com

"Every successful trip needs a suitable vehicle."












Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo

Ok I checked it and there is only one class in the package.

Stef

Le 13/3/16 16:27, Alexandre Bergel a écrit :

Pastell is an implementation of XPath. But I had a look at it many years ago 
(when I was extracting data from srcML xml files, you remember? :-)

Alexandre



On Mar 13, 2016, at 1:39 PM, stepharo  wrote:

Alex

what Pastell brings compared to XPath?

Stef






Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo

So I wonder why Fabrizio did OPAX do you have an idea?
You get a simple tree but it is worth?
I will finish my improvement on OPAX.

Stef

This class is a pluggable factory that can map elements to different 
XMLElement subclasses based on the name and namespace information of 
those elements. You have to create an instance, configure it to handle 
certain elements with certain classes, and then inject your instance 
into a DOM parser using #nodeFactory: before parsing. Here is an example 
of its use:


doc := (XMLDOMParser on: someXML)
nodeFactory:
(XMLPluggableElementFactory new
elementClass: GenericElement;
handleElement: 'user' withClass: UserElement;
handleElement: 'report' withClass: ReportElement;
handleElement: 'report' namespaceURI: 
'urn:specialreprot' withClass: SpecialReportElement)

parseDocument.

The #handleElementsMatchingClass*: forms try to match elements to the 
specified classes based on the names of those classes when stripped of 
any prefix (like XML) and "Element" suffix and converted to both camel 
case and a hyphenated form. So this:

XMLPluggableElementFactory new
handleElementsMatchingClass: MYRootUserElement

will handle 'rootUser' and 'root-user' elements with the 
MYRootUserElement class.




Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread Alexandre Bergel
Oh cool! I did not know there was a project XPath in Pharo.
I learnt something.

Cheers,
Alexandre


> On Mar 13, 2016, at 2:33 PM, Tudor Girba  wrote:
> 
> XPath is better than Pastell. That is why in Moose we now have XPath.
> 
> Doru
> 
>> On Mar 13, 2016, at 1:49 PM, stepharo  wrote:
>> 
>> Alex
>> 
>> I saw that Pastell is only tagged for Pharo30 and has not metadata.
>> It would be good to revise it.
>> 
>> Stef
>> 
> 
> --
> www.tudorgirba.com
> www.feenk.com
> 
> "Every successful trip needs a suitable vehicle."
> 
> 
> 
> 
> 
> 

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread Alexandre Bergel
Pastell is an implementation of XPath. But I had a look at it many years ago 
(when I was extracting data from srcML xml files, you remember? :-)

Alexandre


> On Mar 13, 2016, at 1:39 PM, stepharo  wrote:
> 
> Alex
> 
> what Pastell brings compared to XPath?
> 
> Stef
> 

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread Tudor Girba
XPath is better than Pastell. That is why in Moose we now have XPath.

Doru

> On Mar 13, 2016, at 1:49 PM, stepharo  wrote:
> 
> Alex
> 
> I saw that Pastell is only tagged for Pharo30 and has not metadata.
> It would be good to revise it.
> 
> Stef
> 

--
www.tudorgirba.com
www.feenk.com

"Every successful trip needs a suitable vehicle."








Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread Tudor Girba
Hi,

Yes, exactly. You get a qualified DOM with a hierarchy that you can afterwards 
visit.

Only the current implementation only works only with the XMLDOMParser. It does 
not work with SAX.

Cheers,
Doru

> On Mar 13, 2016, at 12:55 PM, stepharo  wrote:
> 
> I have the impression that I should also look at 
> 
> XMLPluggableElementFactory new handleElement: 'NOM' withClass: AAAName.
> 
> Because it looks like that I inject my nodes inside the dom
> 
> Am I correct?
> 
> 
> Le 12/3/16 21:59, Tudor Girba a écrit :
>> Hi,
>> 
>> My original work only survived for the XMLDOMParser. See this example:
>> http://ws.stfx.eu/NK2WLSW99X10
>> (paste this in Spotter :))
>> 
>> For an XMLDOMParser, you can say that you want to instantiate a node in the 
>> DOM with an custom instance. For example, here I instantiate  with 
>> AAAName:
>> 
>> 
>> 
>> You are looking for something a bit different. In a way you want to 
>> associate the triggering of a specific handler when some XPath like 
>> expression is being matched for the current element. I think something like 
>> this should go in the main implementation.
>> 
>> Cheers,
>> Doru
>> 
>> 
>> 
>>> On Mar 12, 2016, at 9:33 AM, stepharo  wrote:
>>> 
>>> This is more complex than that.
>>> Because I would like to have a visitor generated from the token I give.
>>> 
>>> And this
>>>start
>>>character
>>>end
>>> 
>>> does not really help me.
>>> 
>>> Because in SAXHandler I have
>>>start
>>>where I should store the properties
>>>   same in characters:
>>>to store the name
>>>   end
>>>where I should invoke the visitor
>>> 
>>> Now it means that I should only store the information for the tag I want.
>>> Does anybody already did that and publish it?
>>> I know doru did that in the past.
>>> I will try.
>>> 
>>> Stef
>>> 
>>> 
>>> 
>>> Le 11/3/16 14:17, Blondeau Vincent a écrit :
 Hi,
 
 The qualified name in function startElement: aQualifiedName attributes: 
 aDictionary, will be FILMS and after FILM and after TITRE,...etc...
 So, you have to tell to your shouldVisit: method to accept TITRE too and 
 get in and after you should implement characters: to get the content on 
 the tag.
 
 Vincent
 
> -Message d'origine-
> De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De la part 
> de
> stepharo
> Envoyé : vendredi 11 mars 2016 14:04
> À : Any question about pharo is welcome
> Objet : [Pharo-users] How to access XML tag name?
> 
> Hi
> 
> Yesterday I started to hack a smart SAX handler. The idea is that I want 
> to just
> specify the tags I want to visit and the SAX handler should invoke 
> (generated)
> visit methods. Like that I can easily get visitors on XML domain.
> 
> Here is an example of what I did.
> 
>  | h |
>  h := SmartSAXHandler new
>  visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
>  on: FileSystem workingDirectory / 'FILMS.XML'.
>  h parseDocument.
>  ^ h
> 
> 
> 
> SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary
> 
>  (visitor shouldVisit: aQualifiedName)
>  ifTrue: [
>  visitor
>  perform: (visitor createdVisitSelector: 
> aQualifiedName)
>  with: aQualifiedName
>  with: aDictionary
>  ]
> 
> 
> Object subclass: #GenericTagSAXVisitor
>  instanceVariableNames: 'visitTag visitTags'
>  classVariableNames: ''
>  category: 'SmartXMLHandler'
> 
> 
> GenericTagSAXVisitor>>visitTags: aCollection
>  "set the tags that will lead to a call to a visitTag:with: method in 
> the visitor"
> 
>  visitTags := aCollection collect: [ :each | each asLowercase ].
>  self createVisitMethods.
> 
> and in a subclass the visit* methods automatically generated
> 
> 
> Now I could not get when I have a Vertigo where I can get 
> the
> Vertigo information.
> I redefined several methods of SAXhandler but without success.
> 
> 
> 
> 
>
>  Vertigo
>  Drame
>  USA
>  
>  
>
>  James
>  Stewart
>  John Ferguson
>
>
>  Kim
>  Novak
>  Madeleine Elster
>
>  
>  Scottie Ferguson, ancien inspecteur de police, est sujet
> au vertige depuis qu'il a vu mourir son
>   collegue. Elster, son ami, le charge de surveiller sa femme,
> Madeleine, ayant des tendances
>   suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
> piege qui se trame autour
>   de lui et dont il va 

Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo

Alex

I saw that Pastell is only tagged for Pharo30 and has not metadata.
It would be good to revise it.

Stef



Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo



Le 13/3/16 13:33, stepharo a écrit :

Hi alex

I do not know :)
I like visitor because they are better than a series of if.
So I will see. I would like to help people to extract their 
information easily.
May be inside the visitNode I could use XPath (do you know what is the 
constraint to use XPath)

does it work on dom objects?

I would like to have something like that (being able to use some node 
to perform custom actions)
Now I do not see how from one visit method I can access the other. and 
if I do not do it in the visit
what is the information I should store (like parent link) to be able 
to identify that a given role is associated to a given film.


visitFilm
title := self extractFromChildren: #Titre.
pays := self extractFromChildren: #Pays.
self newFilm: title from: pays.
in fact for subnodes like role I should just continue the visit 
flow and get


But I will keep in mind XPath. It would be grtea to have tutorial on all 
these XML technologies



- SAX
- DOM
- PullParser
- XPath queries / Pastell
- Opax

It could be XML in Pharo a nice book





visitRole

 
 Vertigo
 Drame
 USA
 
 
   
 James
 Stewart
 John Ferguson
   
   
 Kim
 Novak
 Madeleine Elster
   



Stef


Le 13/3/16 11:26, Alexandre Bergel a écrit :

Hi Stef,

I have the impression that a visitor is not the ideal solution to 
query XML tree. It works well in some case, and it is disastrous in 
some other.
XPath is the way to query XML data. As far as I know, there is no 
complete support. Pastell was a nice try however...


Alexandre



On Mar 12, 2016, at 8:11 AM, stepharo  wrote:

Thanks

Ok it was characters: I will try it
What a bad name!

I will probably have to build a stack or dictionary of dictionary of 
the part that I will not want to visit but this is another story :)


Stef


Le 11/3/16 14:17, Blondeau Vincent a écrit :

Hi,

The qualified name in function startElement: aQualifiedName 
attributes: aDictionary, will be FILMS and after FILM and after 
TITRE,...etc...
So, you have to tell to your shouldVisit: method to accept TITRE 
too and get in and after you should implement characters: to get 
the content on the tag.


Vincent


-Message d'origine-
De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De 
la part de

stepharo
Envoyé : vendredi 11 mars 2016 14:04
À : Any question about pharo is welcome
Objet : [Pharo-users] How to access XML tag name?

Hi

Yesterday I started to hack a smart SAX handler. The idea is that 
I want to just
specify the tags I want to visit and the SAX handler should invoke 
(generated)

visit methods. Like that I can easily get visitors on XML domain.

Here is an example of what I did.

  | h |
  h := SmartSAXHandler new
  visitor: (MyFilmVisitor new visitTags: #(FILM 
ROLE));

  on: FileSystem workingDirectory / 'FILMS.XML'.
  h parseDocument.
  ^ h



SmartSAXHAndler >> startElement: aQualifiedName attributes: 
aDictionary


  (visitor shouldVisit: aQualifiedName)
  ifTrue: [
  visitor
  perform: (visitor createdVisitSelector: 
aQualifiedName)

  with: aQualifiedName
  with: aDictionary
  ]


Object subclass: #GenericTagSAXVisitor
  instanceVariableNames: 'visitTag visitTags'
  classVariableNames: ''
  category: 'SmartXMLHandler'


GenericTagSAXVisitor>>visitTags: aCollection
  "set the tags that will lead to a call to a visitTag:with: 
method in the visitor"


  visitTags := aCollection collect: [ :each | each asLowercase ].
  self createVisitMethods.

and in a subclass the visit* methods automatically generated


Now I could not get when I have a Vertigo where I 
can get the

Vertigo information.
I redefined several methods of SAXhandler but without success.





  Vertigo
  Drame
  USA
  
  

  James
  Stewart
  John Ferguson


  Kim
  Novak
  Madeleine Elster

  
  Scottie Ferguson, ancien inspecteur de police, est 
sujet

au vertige depuis qu'il a vu mourir son
   collegue. Elster, son ami, le charge de surveiller sa femme,
Madeleine, ayant des tendances
   suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
piege qui se trame autour
   de lui et dont il va etre la victime... 

!!!* 

"Ce message et les pièces jointes sont confidentiels et réservés à 
l'usage exclusif de ses destinataires. Il peut également être 
protégé par le secret professionnel. Si vous recevez ce message par 
erreur, merci d'en avertir immédiatement l'expéditeur et de le 
détruire. L'intégrité du message ne pouvant être assurée sur 
Internet, la responsabilité de Worldline ne 

Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo

Alex

what Pastell brings compared to XPath?

Stef



Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread stepharo

Hi alex

I do not know :)
I like visitor because they are better than a series of if.
So I will see. I would like to help people to extract their information 
easily.
May be inside the visitNode I could use XPath (do you know what is the 
constraint to use XPath)

does it work on dom objects?

I would like to have something like that (being able to use some node to 
perform custom actions)
Now I do not see how from one visit method I can access the other. and 
if I do not do it in the visit
what is the information I should store (like parent link) to be able to 
identify that a given role is associated to a given film.


visitFilm
title := self extractFromChildren: #Titre.
pays := self extractFromChildren: #Pays.
self newFilm: title from: pays.


visitRole

 
 Vertigo
 Drame
 USA
 
 
   
 James
 Stewart
 John Ferguson
   
   
 Kim
 Novak
 Madeleine Elster
   



Stef


Le 13/3/16 11:26, Alexandre Bergel a écrit :

Hi Stef,

I have the impression that a visitor is not the ideal solution to query XML 
tree. It works well in some case, and it is disastrous in some other.
XPath is the way to query XML data. As far as I know, there is no complete 
support. Pastell was a nice try however...

Alexandre



On Mar 12, 2016, at 8:11 AM, stepharo  wrote:

Thanks

Ok it was characters: I will try it
What a bad name!

I will probably have to build a stack or dictionary of dictionary of the part 
that I will not want to visit but this is another story :)

Stef


Le 11/3/16 14:17, Blondeau Vincent a écrit :

Hi,

The qualified name in function startElement: aQualifiedName attributes: 
aDictionary, will be FILMS and after FILM and after TITRE,...etc...
So, you have to tell to your shouldVisit: method to accept TITRE too and get in 
and after you should implement characters: to get the content on the tag.

Vincent


-Message d'origine-
De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De la part de
stepharo
Envoyé : vendredi 11 mars 2016 14:04
À : Any question about pharo is welcome
Objet : [Pharo-users] How to access XML tag name?

Hi

Yesterday I started to hack a smart SAX handler. The idea is that I want to just
specify the tags I want to visit and the SAX handler should invoke (generated)
visit methods. Like that I can easily get visitors on XML domain.

Here is an example of what I did.

  | h |
  h := SmartSAXHandler new
  visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
  on: FileSystem workingDirectory / 'FILMS.XML'.
  h parseDocument.
  ^ h



SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary

  (visitor shouldVisit: aQualifiedName)
  ifTrue: [
  visitor
  perform: (visitor createdVisitSelector: aQualifiedName)
  with: aQualifiedName
  with: aDictionary
  ]


Object subclass: #GenericTagSAXVisitor
  instanceVariableNames: 'visitTag visitTags'
  classVariableNames: ''
  category: 'SmartXMLHandler'


GenericTagSAXVisitor>>visitTags: aCollection
  "set the tags that will lead to a call to a visitTag:with: method in the 
visitor"

  visitTags := aCollection collect: [ :each | each asLowercase ].
  self createVisitMethods.

and in a subclass the visit* methods automatically generated


Now I could not get when I have a Vertigo where I can get the
Vertigo information.
I redefined several methods of SAXhandler but without success.





  Vertigo
  Drame
  USA
  
  

  James
  Stewart
  John Ferguson


  Kim
  Novak
  Madeleine Elster

  
  Scottie Ferguson, ancien inspecteur de police, est sujet
au vertige depuis qu'il a vu mourir son
   collegue. Elster, son ami, le charge de surveiller sa femme,
Madeleine, ayant des tendances
   suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
piege qui se trame autour
   de lui et dont il va etre la victime... 


!!!*
"Ce message et les pièces jointes sont confidentiels et réservés à l'usage 
exclusif de ses destinataires. Il peut également être protégé par le secret 
professionnel. Si vous recevez ce message par erreur, merci d'en avertir 
immédiatement l'expéditeur et de le détruire. L'intégrité du message ne pouvant être 
assurée sur Internet, la responsabilité de Worldline ne pourra être recherchée quant 
au contenu de ce message. Bien que les meilleurs efforts soient faits pour maintenir 
cette transmission exempte de tout virus, l'expéditeur ne donne aucune garantie à 
cet égard et sa responsabilité ne saurait être recherchée pour tout dommage 
résultant d'un virus transmis.

This e-mail and the documents attached are confidential and 

Re: [Pharo-users] How to access XML tag name?

2016-03-13 Thread Alexandre Bergel
Hi Stef,

I have the impression that a visitor is not the ideal solution to query XML 
tree. It works well in some case, and it is disastrous in some other.
XPath is the way to query XML data. As far as I know, there is no complete 
support. Pastell was a nice try however...

Alexandre


> On Mar 12, 2016, at 8:11 AM, stepharo  wrote:
> 
> Thanks
> 
> Ok it was characters: I will try it
> What a bad name!
> 
> I will probably have to build a stack or dictionary of dictionary of the part 
> that I will not want to visit but this is another story :)
> 
> Stef
> 
> 
> Le 11/3/16 14:17, Blondeau Vincent a écrit :
>> Hi,
>> 
>> The qualified name in function startElement: aQualifiedName attributes: 
>> aDictionary, will be FILMS and after FILM and after TITRE,...etc...
>> So, you have to tell to your shouldVisit: method to accept TITRE too and get 
>> in and after you should implement characters: to get the content on the tag.
>> 
>> Vincent
>> 
>>> -Message d'origine-
>>> De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De la part de
>>> stepharo
>>> Envoyé : vendredi 11 mars 2016 14:04
>>> À : Any question about pharo is welcome
>>> Objet : [Pharo-users] How to access XML tag name?
>>> 
>>> Hi
>>> 
>>> Yesterday I started to hack a smart SAX handler. The idea is that I want to 
>>> just
>>> specify the tags I want to visit and the SAX handler should invoke 
>>> (generated)
>>> visit methods. Like that I can easily get visitors on XML domain.
>>> 
>>> Here is an example of what I did.
>>> 
>>>  | h |
>>>  h := SmartSAXHandler new
>>>  visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
>>>  on: FileSystem workingDirectory / 'FILMS.XML'.
>>>  h parseDocument.
>>>  ^ h
>>> 
>>> 
>>> 
>>> SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary
>>> 
>>>  (visitor shouldVisit: aQualifiedName)
>>>  ifTrue: [
>>>  visitor
>>>  perform: (visitor createdVisitSelector: aQualifiedName)
>>>  with: aQualifiedName
>>>  with: aDictionary
>>>  ]
>>> 
>>> 
>>> Object subclass: #GenericTagSAXVisitor
>>>  instanceVariableNames: 'visitTag visitTags'
>>>  classVariableNames: ''
>>>  category: 'SmartXMLHandler'
>>> 
>>> 
>>> GenericTagSAXVisitor>>visitTags: aCollection
>>>  "set the tags that will lead to a call to a visitTag:with: method in 
>>> the visitor"
>>> 
>>>  visitTags := aCollection collect: [ :each | each asLowercase ].
>>>  self createVisitMethods.
>>> 
>>> and in a subclass the visit* methods automatically generated
>>> 
>>> 
>>> Now I could not get when I have a Vertigo where I can get the
>>> Vertigo information.
>>> I redefined several methods of SAXhandler but without success.
>>> 
>>> 
>>> 
>>> 
>>>
>>>  Vertigo
>>>  Drame
>>>  USA
>>>  
>>>  
>>>
>>>  James
>>>  Stewart
>>>  John Ferguson
>>>
>>>
>>>  Kim
>>>  Novak
>>>  Madeleine Elster
>>>
>>>  
>>>  Scottie Ferguson, ancien inspecteur de police, est sujet
>>> au vertige depuis qu'il a vu mourir son
>>>   collegue. Elster, son ami, le charge de surveiller sa femme,
>>> Madeleine, ayant des tendances
>>>   suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
>>> piege qui se trame autour
>>>   de lui et dont il va etre la victime... 
>>>
>> 
>> !!!*
>> "Ce message et les pièces jointes sont confidentiels et réservés à l'usage 
>> exclusif de ses destinataires. Il peut également être protégé par le secret 
>> professionnel. Si vous recevez ce message par erreur, merci d'en avertir 
>> immédiatement l'expéditeur et de le détruire. L'intégrité du message ne 
>> pouvant être assurée sur Internet, la responsabilité de Worldline ne pourra 
>> être recherchée quant au contenu de ce message. Bien que les meilleurs 
>> efforts soient faits pour maintenir cette transmission exempte de tout 
>> virus, l'expéditeur ne donne aucune garantie à cet égard et sa 
>> responsabilité ne saurait être recherchée pour tout dommage résultant d'un 
>> virus transmis.
>> 
>> This e-mail and the documents attached are confidential and intended solely 
>> for the addressee; it may also be privileged. If you receive this e-mail in 
>> error, please notify the sender immediately and destroy it. As its integrity 
>> cannot be secured on the Internet, the Worldline liability cannot be 
>> triggered for the message content. Although the sender endeavours to 
>> maintain a computer virus-free network, the sender does not warrant that 
>> this transmission is virus-free and will not be liable for any damages 
>> resulting from any virus transmitted.!!!"
> 
> 

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu

Re: [Pharo-users] How to access XML tag name?

2016-03-12 Thread Hernán Morales Durand
Hi Stephane,

Do you want to extract subtree from a XML?
Or just extract the text in specific nodes?

I think StAX parser is more friendly for selecting nodes (you don't have to
subclass), i.e.:

| parser doc |
doc := '

  
Vertigo
Drame
USA


  
James
Stewart
John Ferguson
  
  
Kim
Novak
Madeleine Elster
  

Scottie Ferguson, ancien inspecteur de police, est sujet
au vertige depuis qu''il a vu mourir son
 collegue. Elster, son ami, le charge de surveiller sa femme, Madeleine,
ayant des tendances
 suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le piege
qui se trame autour
 de lui et dont il va etre la victime... 
  
'.
parser := XMLPullParser parse: doc.
[ parser isEndDocument ] whileFalse: [
parser
if: 'FILM'
peek: [ : found |
Transcript show: found name , ' -> ' , found attributes
asString; cr.
parser next.
Transcript show: parser tagName ].
parser next ]

Anyway if you want to try with SAX, have a look at #test01ParsingNodes and
add some halts in BioNCBIBlastSAXParser to see it in action (that's in
BioSmalltalk). I didn't used visitors though.

Hernán

2016-03-12 5:33 GMT-03:00 stepharo :

> This is more complex than that.
> Because I would like to have a visitor generated from the token I give.
>
> And this
> start
> character
> end
>
> does not really help me.
>
> Because in SAXHandler I have
> start
> where I should store the properties
>same in characters:
> to store the name
>end
> where I should invoke the visitor
>
> Now it means that I should only store the information for the tag I want.
> Does anybody already did that and publish it?
> I know doru did that in the past.
> I will try.
>
> Stef
>
>
>
> Le 11/3/16 14:17, Blondeau Vincent a écrit :
>
>> Hi,
>>
>>
>> The qualified name in function startElement: aQualifiedName attributes:
>> aDictionary, will be FILMS and after FILM and after TITRE,...etc...
>> So, you have to tell to your shouldVisit: method to accept TITRE too and
>> get in and after you should implement characters: to get the content on the
>> tag.
>>
>> Vincent
>>
>> -Message d'origine-
>>> De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De la
>>> part de
>>> stepharo
>>> Envoyé : vendredi 11 mars 2016 14:04
>>> À : Any question about pharo is welcome
>>> Objet : [Pharo-users] How to access XML tag name?
>>>
>>> Hi
>>>
>>> Yesterday I started to hack a smart SAX handler. The idea is that I want
>>> to just
>>> specify the tags I want to visit and the SAX handler should invoke
>>> (generated)
>>> visit methods. Like that I can easily get visitors on XML domain.
>>>
>>> Here is an example of what I did.
>>>
>>>   | h |
>>>   h := SmartSAXHandler new
>>>   visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
>>>   on: FileSystem workingDirectory / 'FILMS.XML'.
>>>   h parseDocument.
>>>   ^ h
>>>
>>>
>>>
>>> SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary
>>>
>>>   (visitor shouldVisit: aQualifiedName)
>>>   ifTrue: [
>>>   visitor
>>>   perform: (visitor createdVisitSelector:
>>> aQualifiedName)
>>>   with: aQualifiedName
>>>   with: aDictionary
>>>   ]
>>>
>>>
>>> Object subclass: #GenericTagSAXVisitor
>>>   instanceVariableNames: 'visitTag visitTags'
>>>   classVariableNames: ''
>>>   category: 'SmartXMLHandler'
>>>
>>>
>>> GenericTagSAXVisitor>>visitTags: aCollection
>>>   "set the tags that will lead to a call to a visitTag:with: method
>>> in the visitor"
>>>
>>>   visitTags := aCollection collect: [ :each | each asLowercase ].
>>>   self createVisitMethods.
>>>
>>> and in a subclass the visit* methods automatically generated
>>>
>>>
>>> Now I could not get when I have a Vertigo where I can get
>>> the
>>> Vertigo information.
>>> I redefined several methods of SAXhandler but without success.
>>>
>>>
>>> 
>>> 
>>> 
>>>   Vertigo
>>>   Drame
>>>   USA
>>>   
>>>   
>>> 
>>>   James
>>>   Stewart
>>>   John Ferguson
>>> 
>>> 
>>>   Kim
>>>   Novak
>>>   Madeleine Elster
>>> 
>>>   
>>>   Scottie Ferguson, ancien inspecteur de police, est sujet
>>> au vertige depuis qu'il a vu mourir son
>>>collegue. Elster, son ami, le charge de surveiller sa femme,
>>> Madeleine, ayant des tendances
>>>suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
>>> piege qui se trame autour
>>>de lui et dont il va etre la victime... 
>>> 
>>>
>>
>>
>> !!!*
>> "Ce message et les pièces jointes sont confidentiels 

Re: [Pharo-users] How to access XML tag name?

2016-03-12 Thread stepharo

This is more complex than that.
Because I would like to have a visitor generated from the token I give.

And this
start
character
end

does not really help me.

Because in SAXHandler I have
start
where I should store the properties
   same in characters:
to store the name
   end
where I should invoke the visitor

Now it means that I should only store the information for the tag I want.
Does anybody already did that and publish it?
I know doru did that in the past.
I will try.

Stef



Le 11/3/16 14:17, Blondeau Vincent a écrit :

Hi,

The qualified name in function startElement: aQualifiedName attributes: 
aDictionary, will be FILMS and after FILM and after TITRE,...etc...
So, you have to tell to your shouldVisit: method to accept TITRE too and get in 
and after you should implement characters: to get the content on the tag.

Vincent


-Message d'origine-
De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De la part de
stepharo
Envoyé : vendredi 11 mars 2016 14:04
À : Any question about pharo is welcome
Objet : [Pharo-users] How to access XML tag name?

Hi

Yesterday I started to hack a smart SAX handler. The idea is that I want to just
specify the tags I want to visit and the SAX handler should invoke (generated)
visit methods. Like that I can easily get visitors on XML domain.

Here is an example of what I did.

  | h |
  h := SmartSAXHandler new
  visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
  on: FileSystem workingDirectory / 'FILMS.XML'.
  h parseDocument.
  ^ h



SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary

  (visitor shouldVisit: aQualifiedName)
  ifTrue: [
  visitor
  perform: (visitor createdVisitSelector: aQualifiedName)
  with: aQualifiedName
  with: aDictionary
  ]


Object subclass: #GenericTagSAXVisitor
  instanceVariableNames: 'visitTag visitTags'
  classVariableNames: ''
  category: 'SmartXMLHandler'


GenericTagSAXVisitor>>visitTags: aCollection
  "set the tags that will lead to a call to a visitTag:with: method in the 
visitor"

  visitTags := aCollection collect: [ :each | each asLowercase ].
  self createVisitMethods.

and in a subclass the visit* methods automatically generated


Now I could not get when I have a Vertigo where I can get the
Vertigo information.
I redefined several methods of SAXhandler but without success.





  Vertigo
  Drame
  USA
  
  

  James
  Stewart
  John Ferguson


  Kim
  Novak
  Madeleine Elster

  
  Scottie Ferguson, ancien inspecteur de police, est sujet
au vertige depuis qu'il a vu mourir son
   collegue. Elster, son ami, le charge de surveiller sa femme,
Madeleine, ayant des tendances
   suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
piege qui se trame autour
   de lui et dont il va etre la victime... 



!!!*
"Ce message et les pièces jointes sont confidentiels et réservés à l'usage 
exclusif de ses destinataires. Il peut également être protégé par le secret 
professionnel. Si vous recevez ce message par erreur, merci d'en avertir 
immédiatement l'expéditeur et de le détruire. L'intégrité du message ne pouvant être 
assurée sur Internet, la responsabilité de Worldline ne pourra être recherchée quant 
au contenu de ce message. Bien que les meilleurs efforts soient faits pour maintenir 
cette transmission exempte de tout virus, l'expéditeur ne donne aucune garantie à 
cet égard et sa responsabilité ne saurait être recherchée pour tout dommage 
résultant d'un virus transmis.

This e-mail and the documents attached are confidential and intended solely for the 
addressee; it may also be privileged. If you receive this e-mail in error, please 
notify the sender immediately and destroy it. As its integrity cannot be secured on 
the Internet, the Worldline liability cannot be triggered for the message content. 
Although the sender endeavours to maintain a computer virus-free network, the sender 
does not warrant that this transmission is virus-free and will not be liable for any 
damages resulting from any virus transmitted.!!!"





Re: [Pharo-users] How to access XML tag name?

2016-03-11 Thread stepharo

Thanks

Ok it was characters: I will try it
What a bad name!

I will probably have to build a stack or dictionary of dictionary of the 
part that I will not want to visit but this is another story :)


Stef


Le 11/3/16 14:17, Blondeau Vincent a écrit :

Hi,

The qualified name in function startElement: aQualifiedName attributes: 
aDictionary, will be FILMS and after FILM and after TITRE,...etc...
So, you have to tell to your shouldVisit: method to accept TITRE too and get in 
and after you should implement characters: to get the content on the tag.

Vincent


-Message d'origine-
De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De la part de
stepharo
Envoyé : vendredi 11 mars 2016 14:04
À : Any question about pharo is welcome
Objet : [Pharo-users] How to access XML tag name?

Hi

Yesterday I started to hack a smart SAX handler. The idea is that I want to just
specify the tags I want to visit and the SAX handler should invoke (generated)
visit methods. Like that I can easily get visitors on XML domain.

Here is an example of what I did.

  | h |
  h := SmartSAXHandler new
  visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
  on: FileSystem workingDirectory / 'FILMS.XML'.
  h parseDocument.
  ^ h



SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary

  (visitor shouldVisit: aQualifiedName)
  ifTrue: [
  visitor
  perform: (visitor createdVisitSelector: aQualifiedName)
  with: aQualifiedName
  with: aDictionary
  ]


Object subclass: #GenericTagSAXVisitor
  instanceVariableNames: 'visitTag visitTags'
  classVariableNames: ''
  category: 'SmartXMLHandler'


GenericTagSAXVisitor>>visitTags: aCollection
  "set the tags that will lead to a call to a visitTag:with: method in the 
visitor"

  visitTags := aCollection collect: [ :each | each asLowercase ].
  self createVisitMethods.

and in a subclass the visit* methods automatically generated


Now I could not get when I have a Vertigo where I can get the
Vertigo information.
I redefined several methods of SAXhandler but without success.





  Vertigo
  Drame
  USA
  
  

  James
  Stewart
  John Ferguson


  Kim
  Novak
  Madeleine Elster

  
  Scottie Ferguson, ancien inspecteur de police, est sujet
au vertige depuis qu'il a vu mourir son
   collegue. Elster, son ami, le charge de surveiller sa femme,
Madeleine, ayant des tendances
   suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
piege qui se trame autour
   de lui et dont il va etre la victime... 



!!!*
"Ce message et les pièces jointes sont confidentiels et réservés à l'usage 
exclusif de ses destinataires. Il peut également être protégé par le secret 
professionnel. Si vous recevez ce message par erreur, merci d'en avertir 
immédiatement l'expéditeur et de le détruire. L'intégrité du message ne pouvant être 
assurée sur Internet, la responsabilité de Worldline ne pourra être recherchée quant 
au contenu de ce message. Bien que les meilleurs efforts soient faits pour maintenir 
cette transmission exempte de tout virus, l'expéditeur ne donne aucune garantie à 
cet égard et sa responsabilité ne saurait être recherchée pour tout dommage 
résultant d'un virus transmis.

This e-mail and the documents attached are confidential and intended solely for the 
addressee; it may also be privileged. If you receive this e-mail in error, please 
notify the sender immediately and destroy it. As its integrity cannot be secured on 
the Internet, the Worldline liability cannot be triggered for the message content. 
Although the sender endeavours to maintain a computer virus-free network, the sender 
does not warrant that this transmission is virus-free and will not be liable for any 
damages resulting from any virus transmitted.!!!"





Re: [Pharo-users] How to access XML tag name?

2016-03-11 Thread Brice GOVIN

Hi,

according to what have found in the SAXHandler and XMLDOMParser class, you 
should use SAXHandler>>characters: method to get the information inside a 
marker.

Information inside a marker is consider as an XMLString that is created after a 
call to XMLDOMParser>>characters:.


I hope I helped you with your question. =)



--
Brice Govin
PhD student in RMoD research team at INRIA Lille
Software Engineer at THALES AIR SYSTEMS Rungis
ENSTA-Bretagne ENSI2014

22 Avenue du General Leclerc 92340 BOURG-LA-REINE




De : stepharo [via Smalltalk] 
Envoyé : vendredi 11 mars 2016 13:37
À : Brice GOVIN
Objet : How to access XML tag name?

Hi

Yesterday I started to hack a smart SAX handler. The idea is that I want
to just specify the tags
I want to visit and the SAX handler should invoke (generated) visit
methods. Like that I can easily
get visitors on XML domain.

Here is an example of what I did.

 | h |
 h := SmartSAXHandler new
 visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
 on: FileSystem workingDirectory / 'FILMS.XML'.
 h parseDocument.
 ^ h



SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary

 (visitor shouldVisit: aQualifiedName)
 ifTrue: [
 visitor
 perform: (visitor createdVisitSelector: aQualifiedName)
 with: aQualifiedName
 with: aDictionary
 ]


Object subclass: #GenericTagSAXVisitor
 instanceVariableNames: 'visitTag visitTags'
 classVariableNames: ''
 category: 'SmartXMLHandler'


GenericTagSAXVisitor>>visitTags: aCollection
 "set the tags that will lead to a call to a visitTag:with: method
in the visitor"

 visitTags := aCollection collect: [ :each | each asLowercase ].
 self createVisitMethods.

and in a subclass the visit* methods automatically generated


Now I could not get when I have a Vertigo where I can get
the Vertigo information.
I redefined several methods of SAXhandler but without success.




   
 Vertigo
 Drame
 USA
 
 
   
 James
 Stewart
 John Ferguson
   
   
 Kim
 Novak
 Madeleine Elster
   
 
 Scottie Ferguson, ancien inspecteur de police, est sujet
au vertige depuis qu'il a vu mourir son
  collegue. Elster, son ami, le charge de surveiller sa femme,
Madeleine, ayant des tendances
  suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
piege qui se trame autour
  de lui et dont il va etre la victime... 
   




If you reply to this email, your message will be added to the discussion below:
http://forum.world.st/How-to-access-XML-tag-name-tp4884065.html
To unsubscribe from Pharo Smalltalk Users, click here.
NAML


View this message in context: RE: How to access XML tag 
name?
Sent from the Pharo Smalltalk Users mailing list 
archive at 
Nabble.com.


Re: [Pharo-users] How to access XML tag name?

2016-03-11 Thread Blondeau Vincent
Hi,

The qualified name in function startElement: aQualifiedName attributes: 
aDictionary, will be FILMS and after FILM and after TITRE,...etc...
So, you have to tell to your shouldVisit: method to accept TITRE too and get in 
and after you should implement characters: to get the content on the tag.

Vincent

> -Message d'origine-
> De : Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] De la part de
> stepharo
> Envoyé : vendredi 11 mars 2016 14:04
> À : Any question about pharo is welcome
> Objet : [Pharo-users] How to access XML tag name?
>
> Hi
>
> Yesterday I started to hack a smart SAX handler. The idea is that I want to 
> just
> specify the tags I want to visit and the SAX handler should invoke (generated)
> visit methods. Like that I can easily get visitors on XML domain.
>
> Here is an example of what I did.
>
>  | h |
>  h := SmartSAXHandler new
>  visitor: (MyFilmVisitor new visitTags: #(FILM ROLE));
>  on: FileSystem workingDirectory / 'FILMS.XML'.
>  h parseDocument.
>  ^ h
>
>
>
> SmartSAXHAndler >> startElement: aQualifiedName attributes: aDictionary
>
>  (visitor shouldVisit: aQualifiedName)
>  ifTrue: [
>  visitor
>  perform: (visitor createdVisitSelector: aQualifiedName)
>  with: aQualifiedName
>  with: aDictionary
>  ]
>
>
> Object subclass: #GenericTagSAXVisitor
>  instanceVariableNames: 'visitTag visitTags'
>  classVariableNames: ''
>  category: 'SmartXMLHandler'
>
>
> GenericTagSAXVisitor>>visitTags: aCollection
>  "set the tags that will lead to a call to a visitTag:with: method in the 
> visitor"
>
>  visitTags := aCollection collect: [ :each | each asLowercase ].
>  self createVisitMethods.
>
> and in a subclass the visit* methods automatically generated
>
>
> Now I could not get when I have a Vertigo where I can get the
> Vertigo information.
> I redefined several methods of SAXhandler but without success.
>
>
> 
> 
>
>  Vertigo
>  Drame
>  USA
>  
>  
>
>  James
>  Stewart
>  John Ferguson
>
>
>  Kim
>  Novak
>  Madeleine Elster
>
>  
>  Scottie Ferguson, ancien inspecteur de police, est sujet
> au vertige depuis qu'il a vu mourir son
>   collegue. Elster, son ami, le charge de surveiller sa femme,
> Madeleine, ayant des tendances
>   suicidaires. Amoureux de la jeune femme Scottie ne remarque pas le
> piege qui se trame autour
>   de lui et dont il va etre la victime... 
>


!!!*
"Ce message et les pièces jointes sont confidentiels et réservés à l'usage 
exclusif de ses destinataires. Il peut également être protégé par le secret 
professionnel. Si vous recevez ce message par erreur, merci d'en avertir 
immédiatement l'expéditeur et de le détruire. L'intégrité du message ne pouvant 
être assurée sur Internet, la responsabilité de Worldline ne pourra être 
recherchée quant au contenu de ce message. Bien que les meilleurs efforts 
soient faits pour maintenir cette transmission exempte de tout virus, 
l'expéditeur ne donne aucune garantie à cet égard et sa responsabilité ne 
saurait être recherchée pour tout dommage résultant d'un virus transmis.

This e-mail and the documents attached are confidential and intended solely for 
the addressee; it may also be privileged. If you receive this e-mail in error, 
please notify the sender immediately and destroy it. As its integrity cannot be 
secured on the Internet, the Worldline liability cannot be triggered for the 
message content. Although the sender endeavours to maintain a computer 
virus-free network, the sender does not warrant that this transmission is 
virus-free and will not be liable for any damages resulting from any virus 
transmitted.!!!"