Article View: fr.comp.text.xml
Article #8398Re: Parser via DTD ??(command line MSXML + python)
From: Gillou
Date: Mon, 29 Oct 2001 12:41
Date: Mon, 29 Oct 2001 12:41
105 lines
4536 bytes
4536 bytes
Pour �a c'est assez simple.
Conditions:
* ActiveState Python 2.1.1 ou les extensions Win32 pour Python 2.1.1
standard
* MSXML 3 de Microsoft (ou plus)
Voici le bout de code qui fonctionne (tr�s bien) pour moi en mode console:
(attention, il faudra peut-�tre recomposer les lignes)
<snip>
import win32com.client
# CONSOLEENCODE = 'iso-8859-1' # pour HTML ou fichier texte Windows
CONSOLEENCODE = 'cp850' # pour console DOS
class MSXMLEvents:
'''Handlers de callback des events MSXML3
'''
def Ononreadystatechange(self):
# Generation du message d'erreur si necessaire
if (self.readyState == 4 and self.childNodes.length == 0):
print 'ERREUR: Document XML non valide'
print 'Code erreur:', hex(self.parseError.errorCode)
print self.parseError.reason.encode(CONSOLEENCODE)
print 'Fichier:', self.parseError.url
print 'Position:', self.parseError.filepos
linepos = self.parseError.linepos
print 'Ligne:', self.parseError.line, ', Colonne:', linepos
srctxt =
string.replace(self.parseError.srcText.encode(CONSOLEENCODE), '\t', ' ')
if linepos != 0 and srctxt != '':
print srctxt
print '-' * (linepos - 1) + '^'
return
def Onondataavailable(self):
print 'donnees disponibles'
return
Ox = win32com.client.DispatchWithEvents('MSXML2.DomDocument', MSXMLEvents)
Ox.validateOnParse = TRUE
Ox.resolveExternals = TRUE
Ox.async = FALSE
Ox.preserveWhiteSpace = FALSE
try:
fichierxml = sys.argv[1]
except IndexError, e:
print __doc__
sys.exit(0)
Ox.load(fichierxml)
docRoot = Ox.documentElement
if not docRoot:
# Il y a eu des erreurs
sys.exit(0)
# On continue �ventuellement.
# Si c'est uniquement pour valider, on s'arrete la
</snip>
"Barghest" <barghest@wanadoo.fr> a �crit dans le message news:
9rbh35$466$1@reader1.imaginet.fr...
> <vallot@yahoo.com> a �crit dans le message de news:
> 3bd5812b$0$2315$626a54ce@news.free.fr...
> > MindbreakeR wrote:
>
> > > <vallot@yahoo.com> a �crit dans le message de news:
> > > > manque "ligne de commande" !
>
> > > je suis sur un petit projet perso en xml, et ca a l'air de bien
> marcher....
> > > c'est koi le probleme des lignes de commandes ?
> > > (je suis debutant... detaille donc ta reponse stp)
>
> > en fait, la demande initiale �tait de pouvoir faire, par exemple, de
> tester un xml dans un script (shell, bat, �a d�pend de la plateforme), par
> un appel du genre:
> > doctester -dtd madtd -xml toto.xml
> > qui rendrait vrai/faux/etc
>
> > pas d'interface, pas d'intervention humaine: automatique, quoi...
>
> Tout � fait... Je veux l'utiliser dans un script automatique.
>
> Une procedure entirement automatique doit pouvoir generer du XML valide (
> DTD et syntaxe ) et pouvoir gerer les erreurs lui m�me. D'o� l'importance
de
> l'integration du parser.
>
> J'ai t�l�charg� Xerces C++ je pensais pouvoir l'utiliser avec perl mais le
> wrapper perl n'est pas support� sous Win32.
>
> Je vais donc essayer de le faire sous Java... Ca me gonfle car je connais
> pas tr�s bien Java.
>
> J'ai regard� sous PHP, le parser utilis� est Expat qui ne tient pas compte
> des DTD...
>
> Faudrait que je jette un oeil sous python, ils ont d� faire quelque
chose...
>
>
>
Technical Details
Message-ID:
<9rjief$2fhp$1@norfair.nerim.net>Path:
arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!isdnet!nerim.net!norfair.nerim.net!not-for-mailReferences:
<9r1egc$r1b$1@quark.noos.net> <3bd5812b$0$2315$626a54ce@news.free.fr> <9rbh35$466$1@reader1.imaginet.fr>Show Full Headers
Complete Article Headers
X-Google-Language: FRENCH,ASCII X-Google-Thread: 114f60,c447ac670c7344be X-Google-Attributes: gid114f60,public X-Google-ArrivalTime: 2001-10-29 04:35:38 PST Path: arc1-ca.pugleaf.net!archiver1.google.com!news1.google.com!sn-xit-02!supernews.com!isdnet!nerim.net!norfair.nerim.net!not-for-mail From: "Gillou" <nospam@bigfoot.com> Newsgroups: fr.comp.text.xml Subject: Re: Parser via DTD ??(command line MSXML + python) Date: Mon, 29 Oct 2001 13:41:40 +0100 Organization: Nerim -- xDSL Internet Provider Lines: 107 Message-ID: <9rjief$2fhp$1@norfair.nerim.net> References: <9r1egc$r1b$1@quark.noos.net> <3bd5812b$0$2315$626a54ce@news.free.fr> <9rbh35$466$1@reader1.imaginet.fr> NNTP-Posting-Host: aboukir-101-1-2-pilot.adsl.nerim.net X-Trace: norfair.nerim.net 1004358927 81465 62.4.20.186 (29 Oct 2001 12:35:27 GMT) X-Complaints-To: abuse@nerim.net NNTP-Posting-Date: Mon, 29 Oct 2001 12:35:27 +0000 (UTC) X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.3018.1300 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.3018.1300