🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: fr.comp.text.xml
Article #8398

Re: Parser via DTD ??(command line MSXML + python)

#8398
From: Gillou
Date: Mon, 29 Oct 2001 12:41
105 lines
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-mail
References: <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