Re: How to access XML tag name?
Posted by
stepharo on
Mar 13, 2016; 11:28am
URL: https://forum.world.st/How-to-access-XML-tag-name-tp4884065p4884285.html
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:
(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 <NOM> 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 <[hidden email]>
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 [[hidden email]]
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
<TITRE>Vertigo</TITRE> where I can get the
Vertigo information.
I redefined several methods of SAXhandler but without
success.
<?xml version="1.0" encoding="iso-8859-1"?>
<FILMS>
<FILM annee="1958">
<TITRE>Vertigo</TITRE>
<GENRE>Drame</GENRE>
<PAYS>USA</PAYS>
<MES idref="3"/>
<ROLES>
<ROLE>
<PRENOM>James</PRENOM>
<NOM>Stewart</NOM>
<INTITULE>John Ferguson</INTITULE>
</ROLE>
<ROLE>
<PRENOM>Kim</PRENOM>
<NOM>Novak</NOM>
<INTITULE>Madeleine Elster</INTITULE>
</ROLE>
</ROLES>
<RESUME>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... </RESUME>
</FILM>
!!!*************************************************************************************
"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.!!!"
--
www.tudorgirba.com
www.feenk.com
"We can create beautiful models in a vacuum.
But, to get them effective we have to deal with the
inconvenience of reality."