PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > nzn.fr.delphi > Parser vite et bien un gros XML
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Parser vite et bien un gros XML

Réponse
 
LinkBack Outils de la discussion
Vieux 14/02/2008, 16h37   #1
FOST©
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Parser vite et bien un gros XML

Je vais devoir récupérer les infos d'un fichier XML pouvant être assez gros (100 mo et plus), et qui répondra au xsd ci-joint.
Quelle est la bonne méthode pour digérer tout ça de façon efficace (rapide j'entends). TXMLDocument ?? Sax ? Autre ?...

  Réponse avec citation
Vieux 14/02/2008, 16h46   #2
loki
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

surtout pas TxmlDocument ! pour 100Mo uniquement Sax ...

regarde sur torry.net le composant Alcinoe (TalXmlDocument) ... ou sur sourceforge.
ca tiens dans une seule unité. C'est un composant qui fonctionne comme le
TXMLDocument (meme propriété) mais qui te permet de faire du sax, c'est donc simple
et pratique

sinon y a pierre y qui à fait un truc aussi je pense

a++
stephane

"FOST©" <exe@dll.com> wrote in message news:fp1qpv$8lm$1@sd-6836.dedibox.fr...

> Je vais devoir récupérer les infos d'un fichier XML pouvant être assez gros (100 mo et plus), et qui répondra au xsd ci-joint.
> Quelle est la bonne méthode pour digérer tout ça de façon efficace (rapide j'entends). TXMLDocument ?? Sax ? Autre ?...
>



--------------------------------------------------------------------------------



> <?xml version="1.0" encoding="utf-8" ?>
> <xs:schema id="Diagnostic"
> targetNamespace="http://schemas.bvdep.com/Diagnostic.xsd"
> elementFormDefault="qualified"
> xmlns="http://schemas.bvdep.com/Diagnostic.xsd"
> xmlns:mstns="http://schemas.bvdep.com/Diagnostic.xsd"
> xmlns:xs="http://www.w3.org/2001/XMLSchema">
>
> <xs:simpleType name="siretType">
> <xs:restriction base="xs:string">
> <xs:pattern value="[0-9]{9}-[0-9]{5}"></xs:pattern>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="postType">
> <xs:restriction base="xs:positiveInteger">
> <xs:pattern value="[0-9]{5}"></xs:pattern>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="moisType">
> <xs:restriction base="xs:positiveInteger">
> <xs:pattern value="[0-9]{2}"></xs:pattern>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="nafType">
> <xs:restriction base="xs:string">
> <xs:pattern value="[0-9]{3}[A-Z]{1}"></xs:pattern>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="anneeType">
> <xs:restriction base="xs:integer">
> <xs:pattern value="[0-9]{4}"></xs:pattern>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="noemptystringType">
> <xs:restriction base="xs:string">
> <xs:minLength value="1"/>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="stringOrNa">
> <xs:union memberTypes="noemptystringType">
> <xs:simpleType id="notAvailable1">
> <xs:restriction base="xs:string">
> <xs:enumeration value="N.D."></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
> </xs:union>
> </xs:simpleType>
>
> <xs:simpleType name="doubleOrNa">
> <xs:union memberTypes="xs:double">
> <xs:simpleType id="notAvailable2">
> <xs:restriction base="xs:string">
> <xs:enumeration value="N.D."></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
> </xs:union>
> </xs:simpleType>
>
> <xs:simpleType name="dateOrNa">
> <xs:union memberTypes="xs:date">
> <xs:simpleType id="notAvailable5">
> <xs:restriction base="xs:string">
> <xs:enumeration value="N.D."></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
> </xs:union>
> </xs:simpleType>
>
> <xs:simpleType name="postOrNa">
> <xs:union memberTypes="postType">
> <xs:simpleType id="notAvailable3">
> <xs:restriction base="xs:string">
> <xs:enumeration value="N.D."></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
> </xs:union>
> </xs:simpleType>
>
> <xs:simpleType name="nafOrNa">
> <xs:union memberTypes="nafType">
> <xs:simpleType id="notAvailable4">
> <xs:restriction base="xs:string">
> <xs:enumeration value="N.D."></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
> </xs:union>
> </xs:simpleType>
>
> <xs:simpleType name="anneeOrNa">
> <xs:union memberTypes="anneeType">
> <xs:simpleType id="notAvailable6">
> <xs:restriction base="xs:string">
> <xs:enumeration value="N.D."></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
> </xs:union>
> </xs:simpleType>
>
> <xs:simpleType name="integerOrNa">
> <xs:union memberTypes="xs:integer">
> <xs:simpleType id="notAvailable7">
> <xs:restriction base="xs:string">
> <xs:enumeration value="N.D."></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
> </xs:union>
> </xs:simpleType>
>
> <xs:simpleType name="consoType">
> <xs:restriction base="xs:string">
> <xs:enumeration value="CONSO"></xs:enumeration>
> <xs:enumeration value="SOCIAUX"></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="indicatorType">
> <xs:restriction base="xs:string">
> <xs:enumeration value="A"></xs:enumeration>
> <xs:enumeration value="A+"></xs:enumeration>
> <xs:enumeration value="A-"></xs:enumeration>
> <xs:enumeration value="B"></xs:enumeration>
> <xs:enumeration value="B+"></xs:enumeration>
> <xs:enumeration value="B-"></xs:enumeration>
> <xs:enumeration value="C"></xs:enumeration>
> <xs:enumeration value="C+"></xs:enumeration>
> <xs:enumeration value="C-"></xs:enumeration>
> <xs:enumeration value="D"></xs:enumeration>
> <xs:enumeration value="D+"></xs:enumeration>
> <xs:enumeration value="D-"></xs:enumeration>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="formeType">
> <xs:restriction base="xs:integer">
> <xs:minInclusive value="0"/>
> <xs:maxInclusive value="14"/>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:simpleType name="situationType">
> <xs:restriction base="xs:integer">
> <xs:minInclusive value="0"/>
> <xs:maxInclusive value="9"/>
> </xs:restriction>
> </xs:simpleType>
>
> <xs:complexType name="dirigeantType">
> <xs:sequence minOccurs="1" maxOccurs="1">
> <xs:element name="_TITDI1" type="stringOrNa"></xs:element>
> <xs:element name="_NOMDI1" type="stringOrNa"></xs:element>
> <xs:element name="_FCTDI1" type="stringOrNa"></xs:element>
> <xs:element name="_ANIDI1" type="anneeOrNa"></xs:element>
> </xs:sequence>
> </xs:complexType>
>
> <xs:complexType name="dirigeantSection">
> <xs:sequence minOccurs="0" maxOccurs="unbounded">
> <xs:element name="DIRIGEANT" type="dirigeantType"></xs:element>
> </xs:sequence>
> </xs:complexType>
>
> <xs:complexType name="administrateurType">
> <xs:sequence minOccurs="1" maxOccurs="1">
> <xs:element name="_TITDI2" type="stringOrNa"></xs:element>
> <xs:element name="_NOMDI2" type="stringOrNa"></xs:element>
> <xs:element name="_FCTDI2" type="stringOrNa"></xs:element>
> <xs:element name="_ANIDI2" type="anneeOrNa"></xs:element>
> </xs:sequence>
> </xs:complexType>
>
> <xs:complexType name="administrateurSection">
> <xs:sequence minOccurs="0" maxOccurs="unbounded">
> <xs:element name="ADMINISTRATEUR" type="administrateurType"></xs:element>
> </xs:sequence>
> </xs:complexType>
>
> <xs:complexType name="recordType">
> <xs:sequence minOccurs="1" maxOccurs="1">
> <xs:element name="_SIRET" type="siretType"/>
> <xs:element name="_DATECLOT" type="xs:date"/>
> <xs:element name="_NOM" type="stringOrNa"/>
> <xs:element name="_SIGLE" type="stringOrNa"/>
> <xs:element name="_ENSEIGNE" type="stringOrNa"/>
> <xs:element name="_CODEPOSTAL" type="postOrNa"/>
> <xs:element name="_VILLE" type="stringOrNa"/>
> <xs:element name="_NAF" type="nafOrNa"/>
> <xs:element name="_LIBNAF" type="stringOrNa"/>
> <xs:element name="_NMOIS" type="moisType"/>
> <xs:element name="_OBJET" type="stringOrNa"/>
> <xs:element name="_CONSOL" type="consoType"/>
> <xs:element name="_FORMJURID" type="formeType"/>
> <xs:element name="_SIT_JURID" type="situationType"/>
> <xs:element name="_DATECREAT" type="dateOrNa"/>
> <xs:element name="_DERNANNEE" type="anneeOrNa"/>
> <xs:element name="_CAFF" type="integerOrNa"/>
> <xs:element name="_FR" type="integerOrNa"/>
> <xs:element name="_YP" type="integerOrNa"/>
> <xs:element name="_EE" type="integerOrNa"/>
> <xs:element name="_S37" type="doubleOrNa"/>
> <xs:element name="_AFDC" type="doubleOrNa"/>
> <xs:element name="_YW" type="integerOrNa"/>
> <xs:element name="_HK" type="integerOrNa"/>
> <xs:element name="_DA" type="integerOrNa"/>
> <xs:element name="_DL" type="integerOrNa"/>
> <xs:element name="_AA" type="integerOrNa"/>
> <xs:element name="_AB" type="integerOrNa"/>
> <xs:element name="_ABN" type="integerOrNa"/>
> <xs:element name="_AD" type="integerOrNa"/>
> <xs:element name="_AE" type="integerOrNa"/>
> <xs:element name="_ADN" type="integerOrNa"/>
> <xs:element name="_AF" type="integerOrNa"/>
> <xs:element name="_AG" type="integerOrNa"/>
> <xs:element name="_AFN" type="integerOrNa"/>
> <xs:element name="_AH" type="integerOrNa"/>
> <xs:element name="_AI" type="integerOrNa"/>
> <xs:element name="_AHN" type="integerOrNa"/>
> <xs:element name="_AC" type="integerOrNa"/>
> <xs:element name="_AJ" type="integerOrNa"/>
> <xs:element name="_AK" type="integerOrNa"/>
> <xs:element name="_AJN" type="integerOrNa"/>
> <xs:element name="_AL" type="integerOrNa"/>
> <xs:element name="_AM" type="integerOrNa"/>
> <xs:element name="_ALN" type="integerOrNa"/>
> <xs:element name="_A0" type="integerOrNa"/>
> <xs:element name="_A1" type="integerOrNa"/>
> <xs:element name="_A0N" type="integerOrNa"/>
> <xs:element name="_A2" type="integerOrNa"/>
> <xs:element name="_A3" type="integerOrNa"/>
> <xs:element name="_A2N" type="integerOrNa"/>
> <xs:element name="_AN" type="integerOrNa"/>
> <xs:element name="_AO" type="integerOrNa"/>
> <xs:element name="_ANN" type="integerOrNa"/>
> <xs:element name="_AP" type="integerOrNa"/>
> <xs:element name="_AQ" type="integerOrNa"/>
> <xs:element name="_APN" type="integerOrNa"/>
> <xs:element name="_AR" type="integerOrNa"/>
> <xs:element name="_AS" type="integerOrNa"/>
> <xs:element name="_ARN" type="integerOrNa"/>
> <xs:element name="_AT" type="integerOrNa"/>
> <xs:element name="_AU" type="integerOrNa"/>
> <xs:element name="_ATN" type="integerOrNa"/>
> <xs:element name="_AV" type="integerOrNa"/>
> <xs:element name="_AW" type="integerOrNa"/>
> <xs:element name="_AVN" type="integerOrNa"/>
> <xs:element name="_AX" type="integerOrNa"/>
> <xs:element name="_AY" type="integerOrNa"/>
> <xs:element name="_AXN" type="integerOrNa"/>
> <xs:element name="_A4" type="integerOrNa"/>
> <xs:element name="_A5" type="integerOrNa"/>
> <xs:element name="_A4N" type="integerOrNa"/>
> <xs:element name="_A6" type="integerOrNa"/>
> <xs:element name="_A7" type="integerOrNa"/>
> <xs:element name="_A6N" type="integerOrNa"/>
> <xs:element name="_AZ" type="integerOrNa"/>
> <xs:element name="_CS" type="integerOrNa"/>
> <xs:element name="_BA" type="integerOrNa"/>
> <xs:element name="_CT" type="integerOrNa"/>
> <xs:element name="_AZN" type="integerOrNa"/>
> <xs:element name="_CSN" type="integerOrNa"/>
> <xs:element name="_CU" type="integerOrNa"/>
> <xs:element name="_CV" type="integerOrNa"/>
> <xs:element name="_CUN" type="integerOrNa"/>
> <xs:element name="_BB" type="integerOrNa"/>
> <xs:element name="_BC" type="integerOrNa"/>
> <xs:element name="_BBN" type="integerOrNa"/>
> <xs:element name="_BD" type="integerOrNa"/>
> <xs:element name="_BE" type="integerOrNa"/>
> <xs:element name="_BDN" type="integerOrNa"/>
> <xs:element name="_BF" type="integerOrNa"/>
> <xs:element name="_BG" type="integerOrNa"/>
> <xs:element name="_BFN" type="integerOrNa"/>
> <xs:element name="_BH" type="integerOrNa"/>
> <xs:element name="_BI" type="integerOrNa"/>
> <xs:element name="_BHN" type="integerOrNa"/>
> <xs:element name="_A8" type="integerOrNa"/>
> <xs:element name="_A9" type="integerOrNa"/>
> <xs:element name="_A8N" type="integerOrNa"/>
> <xs:element name="_BJ" type="integerOrNa"/>
> <xs:element name="_BK" type="integerOrNa"/>
> <xs:element name="_BJN" type="integerOrNa"/>
> <xs:element name="_BL" type="integerOrNa"/>
> <xs:element name="_BM" type="integerOrNa"/>
> <xs:element name="_BLN" type="integerOrNa"/>
> <xs:element name="_BN" type="integerOrNa"/>
> <xs:element name="_BO" type="integerOrNa"/>
> <xs:element name="_BNN" type="integerOrNa"/>
> <xs:element name="_BP" type="integerOrNa"/>
> <xs:element name="_BQ" type="integerOrNa"/>
> <xs:element name="_BPN" type="integerOrNa"/>
> <xs:element name="_BR" type="integerOrNa"/>
> <xs:element name="_BS" type="integerOrNa"/>
> <xs:element name="_BRN" type="integerOrNa"/>
> <xs:element name="_BT" type="integerOrNa"/>
> <xs:element name="_BU" type="integerOrNa"/>
> <xs:element name="_BTN" type="integerOrNa"/>
> <xs:element name="_B0" type="integerOrNa"/>
> <xs:element name="_B1" type="integerOrNa"/>
> <xs:element name="_B0N" type="integerOrNa"/>
> <xs:element name="_BV" type="integerOrNa"/>
> <xs:element name="_BW" type="integerOrNa"/>
> <xs:element name="_BVN" type="integerOrNa"/>
> <xs:element name="_BX" type="integerOrNa"/>
> <xs:element name="_BY" type="integerOrNa"/>
> <xs:element name="_BXN" type="integerOrNa"/>
> <xs:element name="_B2" type="integerOrNa"/>
> <xs:element name="_B3" type="integerOrNa"/>
> <xs:element name="_B2N" type="integerOrNa"/>
> <xs:element name="_BZ" type="integerOrNa"/>
> <xs:element name="_CA" type="integerOrNa"/>
> <xs:element name="_BZN" type="integerOrNa"/>
> <xs:element name="_CB" type="integerOrNa"/>
> <xs:element name="_CC" type="integerOrNa"/>
> <xs:element name="_CBN" type="integerOrNa"/>
> <xs:element name="_CD" type="integerOrNa"/>
> <xs:element name="_CE" type="integerOrNa"/>
> <xs:element name="_CDN" type="integerOrNa"/>
> <xs:element name="_CF" type="integerOrNa"/>
> <xs:element name="_CG" type="integerOrNa"/>
> <xs:element name="_CFN" type="integerOrNa"/>
> <xs:element name="_B4" type="integerOrNa"/>
> <xs:element name="_B5" type="integerOrNa"/>
> <xs:element name="_B4N" type="integerOrNa"/>
> <xs:element name="_CH" type="integerOrNa"/>
> <xs:element name="_CI" type="integerOrNa"/>
> <xs:element name="_CHN" type="integerOrNa"/>
> <xs:element name="_CJ" type="integerOrNa"/>
> <xs:element name="_CK" type="integerOrNa"/>
> <xs:element name="_CJN" type="integerOrNa"/>
> <xs:element name="_CL" type="integerOrNa"/>
> <xs:element name="_CM" type="integerOrNa"/>
> <xs:element name="_CN" type="integerOrNa"/>
> <xs:element name="_CO" type="integerOrNa"/>
> <xs:element name="_1A" type="integerOrNa"/>
> <xs:element name="_CON" type="integerOrNa"/>
> <xs:element name="_DB" type="integerOrNa"/>
> <xs:element name="_DC" type="integerOrNa"/>
> <xs:element name="_EK" type="integerOrNa"/>
> <xs:element name="_DD" type="integerOrNa"/>
> <xs:element name="_DE" type="integerOrNa"/>
> <xs:element name="_DF" type="integerOrNa"/>
> <xs:element name="_DG" type="integerOrNa"/>
> <xs:element name="_P0" type="integerOrNa"/>
> <xs:element name="_P1" type="integerOrNa"/>
> <xs:element name="_DH" type="integerOrNa"/>
> <xs:element name="_DI" type="integerOrNa"/>
> <xs:element name="_DJ" type="integerOrNa"/>
> <xs:element name="_DK" type="integerOrNa"/>
> <xs:element name="_P2" type="integerOrNa"/>
> <xs:element name="_P3" type="integerOrNa"/>
> <xs:element name="_P4" type="integerOrNa"/>
> <xs:element name="_P5" type="integerOrNa"/>
> <xs:element name="_DM" type="integerOrNa"/>
> <xs:element name="_DN" type="integerOrNa"/>
> <xs:element name="_DO" type="integerOrNa"/>
> <xs:element name="_DP" type="integerOrNa"/>
> <xs:element name="_DQ" type="integerOrNa"/>
> <xs:element name="_P6" type="integerOrNa"/>
> <xs:element name="_DR" type="integerOrNa"/>
> <xs:element name="_DS" type="integerOrNa"/>
> <xs:element name="_DT" type="integerOrNa"/>
> <xs:element name="_DU" type="integerOrNa"/>
> <xs:element name="_DV" type="integerOrNa"/>
> <xs:element name="_P7" type="integerOrNa"/>
> <xs:element name="_DW" type="integerOrNa"/>
> <xs:element name="_DX" type="integerOrNa"/>
> <xs:element name="_DY" type="integerOrNa"/>
> <xs:element name="_DZ" type="integerOrNa"/>
> <xs:element name="_EA" type="integerOrNa"/>
> <xs:element name="_EB" type="integerOrNa"/>
> <xs:element name="_P8" type="integerOrNa"/>
> <xs:element name="_EC" type="integerOrNa"/>
> <xs:element name="_ED" type="integerOrNa"/>
> <xs:element name="_1B" type="integerOrNa"/>
> <xs:element name="_1C" type="integerOrNa"/>
> <xs:element name="_1D" type="integerOrNa"/>
> <xs:element name="_1E" type="integerOrNa"/>
> <xs:element name="_EF" type="integerOrNa"/>
> <xs:element name="_EJ" type="integerOrNa"/>
> <xs:element name="_EG" type="integerOrNa"/>
> <xs:element name="_EH" type="integerOrNa"/>
> <xs:element name="_EI" type="integerOrNa"/>
> <xs:element name="_FA" type="integerOrNa"/>
> <xs:element name="_FB" type="integerOrNa"/>
> <xs:element name="_FC" type="integerOrNa"/>
> <xs:element name="_FD" type="integerOrNa"/>
> <xs:element name="_FE" type="integerOrNa"/>
> <xs:element name="_FF" type="integerOrNa"/>
> <xs:element name="_FG" type="integerOrNa"/>
> <xs:element name="_FH" type="integerOrNa"/>
> <xs:element name="_FI" type="integerOrNa"/>
> <xs:element name="_FJ" type="integerOrNa"/>
> <xs:element name="_FK" type="integerOrNa"/>
> <xs:element name="_FL" type="integerOrNa"/>
> <xs:element name="_FM" type="integerOrNa"/>
> <xs:element name="_FN" type="integerOrNa"/>
> <xs:element name="_FO" type="integerOrNa"/>
> <xs:element name="_FP" type="integerOrNa"/>
> <xs:element name="_FQ" type="integerOrNa"/>
> <xs:element name="_FS" type="integerOrNa"/>
> <xs:element name="_FT" type="integerOrNa"/>
> <xs:element name="_FU" type="integerOrNa"/>
> <xs:element name="_FV" type="integerOrNa"/>
> <xs:element name="_R0" type="integerOrNa"/>
> <xs:element name="_FW" type="integerOrNa"/>
> <xs:element name="_FX" type="integerOrNa"/>
> <xs:element name="_FY" type="integerOrNa"/>
> <xs:element name="_FZ" type="integerOrNa"/>
> <xs:element name="_GA" type="integerOrNa"/>
> <xs:element name="_GB" type="integerOrNa"/>
> <xs:element name="_GC" type="integerOrNa"/>
> <xs:element name="_GD" type="integerOrNa"/>
> <xs:element name="_R1" type="integerOrNa"/>
> <xs:element name="_GE" type="integerOrNa"/>
> <xs:element name="_GF" type="integerOrNa"/>
> <xs:element name="_GG" type="integerOrNa"/>
> <xs:element name="_GH" type="integerOrNa"/>
> <xs:element name="_GI" type="integerOrNa"/>
> <xs:element name="_GJ" type="integerOrNa"/>
> <xs:element name="_GK" type="integerOrNa"/>
> <xs:element name="_GL" type="integerOrNa"/>
> <xs:element name="_GM" type="integerOrNa"/>
> <xs:element name="_GN" type="integerOrNa"/>
> <xs:element name="_GO" type="integerOrNa"/>
> <xs:element name="_R2" type="integerOrNa"/>
> <xs:element name="_GP" type="integerOrNa"/>
> <xs:element name="_GQ" type="integerOrNa"/>
> <xs:element name="_GR" type="integerOrNa"/>
> <xs:element name="_GS" type="integerOrNa"/>
> <xs:element name="_GT" type="integerOrNa"/>
> <xs:element name="_R3" type="integerOrNa"/>
> <xs:element name="_GU" type="integerOrNa"/>
> <xs:element name="_GV" type="integerOrNa"/>
> <xs:element name="_GW" type="integerOrNa"/>
> <xs:element name="_HA" type="integerOrNa"/>
> <xs:element name="_HB" type="integerOrNa"/>
> <xs:element name="_HC" type="integerOrNa"/>
> <xs:element name="_HD" type="integerOrNa"/>
> <xs:element name="_HE" type="integerOrNa"/>
> <xs:element name="_HF" type="integerOrNa"/>
> <xs:element name="_HG" type="integerOrNa"/>
> <xs:element name="_HH" type="integerOrNa"/>
> <xs:element name="_HI" type="integerOrNa"/>
> <xs:element name="_HJ" type="integerOrNa"/>
> <xs:element name="_R4" type="integerOrNa"/>
> <xs:element name="_R5" type="integerOrNa"/>
> <xs:element name="_R6" type="integerOrNa"/>
> <xs:element name="_HL" type="integerOrNa"/>
> <xs:element name="_HM" type="integerOrNa"/>
> <xs:element name="_R7" type="integerOrNa"/>
> <xs:element name="_R8" type="integerOrNa"/>
> <xs:element name="_HN" type="integerOrNa"/>
> <xs:element name="_R9" type="integerOrNa"/>
> <xs:element name="_S0" type="integerOrNa"/>
> <xs:element name="_HO" type="integerOrNa"/>
> <xs:element name="_1G" type="integerOrNa"/>
> <xs:element name="_HP" type="integerOrNa"/>
> <xs:element name="_HQ" type="integerOrNa"/>
> <xs:element name="_1H" type="integerOrNa"/>
> <xs:element name="_1J" type="integerOrNa"/>
> <xs:element name="_1K" type="integerOrNa"/>
> <xs:element name="_KC" type="integerOrNa"/>
> <xs:element name="_KF" type="integerOrNa"/>
> <xs:element name="_LO" type="integerOrNa"/>
> <xs:element name="_LP" type="integerOrNa"/>
> <xs:element name="_LR" type="integerOrNa"/>
> <xs:element name="_LS" type="integerOrNa"/>
> <xs:element name="_0J" type="integerOrNa"/>
> <xs:element name="_LT" type="integerOrNa"/>
> <xs:element name="_LV" type="integerOrNa"/>
> <xs:element name="_NG" type="integerOrNa"/>
> <xs:element name="_NH" type="integerOrNa"/>
> <xs:element name="_NJ" type="integerOrNa"/>
> <xs:element name="_0K" type="integerOrNa"/>
> <xs:element name="_PD" type="integerOrNa"/>
> <xs:element name="_PH" type="integerOrNa"/>
> <xs:element name="_QV" type="integerOrNa"/>
> <xs:element name="_QW" type="integerOrNa"/>
> <xs:element name="_QX" type="integerOrNa"/>
> <xs:element name="_SM" type="integerOrNa"/>
> <xs:element name="_SP" type="integerOrNa"/>
> <xs:element name="_3Z" type="integerOrNa"/>
> <xs:element name="_TS" type="integerOrNa"/>
> <xs:element name="_TT" type="integerOrNa"/>
> <xs:element name="_TU" type="integerOrNa"/>
> <xs:element name="_5Z" type="integerOrNa"/>
> <xs:element name="_TV" type="integerOrNa"/>
> <xs:element name="_TW" type="integerOrNa"/>
> <xs:element name="_TX" type="integerOrNa"/>
> <xs:element name="_6B" type="integerOrNa"/>
> <xs:element name="_6D" type="integerOrNa"/>
> <xs:element name="_6H" type="integerOrNa"/>
> <xs:element name="_05" type="integerOrNa"/>
> <xs:element name="_09" type="integerOrNa"/>
> <xs:element name="_6N" type="integerOrNa"/>
> <xs:element name="_6P" type="integerOrNa"/>
> <xs:element name="_6R" type="integerOrNa"/>
> <xs:element name="_6S" type="integerOrNa"/>
> <xs:element name="_6T" type="integerOrNa"/>
> <xs:element name="_6U" type="integerOrNa"/>
> <xs:element name="_6V" type="integerOrNa"/>
> <xs:element name="_6W" type="integerOrNa"/>
> <xs:element name="_6X" type="integerOrNa"/>
> <xs:element name="_6Y" type="integerOrNa"/>
> <xs:element name="_6Z" type="integerOrNa"/>
> <xs:element name="_7A" type="integerOrNa"/>
> <xs:element name="_7B" type="integerOrNa"/>
> <xs:element name="_TY" type="integerOrNa"/>
> <xs:element name="_TZ" type="integerOrNa"/>
> <xs:element name="_UA" type="integerOrNa"/>
> <xs:element name="_7C" type="integerOrNa"/>
> <xs:element name="_UB" type="integerOrNa"/>
> <xs:element name="_UC" type="integerOrNa"/>
> <xs:element name="_UD" type="integerOrNa"/>
> <xs:element name="_UL" type="integerOrNa"/>
> <xs:element name="_UP" type="integerOrNa"/>
> <xs:element name="_UT" type="integerOrNa"/>
> <xs:element name="_VA" type="integerOrNa"/>
> <xs:element name="_UX" type="integerOrNa"/>
> <xs:element name="_UU" type="integerOrNa"/>
> <xs:element name="_UY" type="integerOrNa"/>
> <xs:element name="_UZ" type="integerOrNa"/>
> <xs:element name="_VM" type="integerOrNa"/>
> <xs:element name="_VB" type="integerOrNa"/>
> <xs:element name="_VN" type="integerOrNa"/>
> <xs:element name="_VP" type="integerOrNa"/>
> <xs:element name="_VC" type="integerOrNa"/>
> <xs:element name="_VR" type="integerOrNa"/>
> <xs:element name="_VS" type="integerOrNa"/>
> <xs:element name="_VT" type="integerOrNa"/>
> <xs:element name="_7Y" type="integerOrNa"/>
> <xs:element name="_7Y2" type="integerOrNa"/>
> <xs:element name="_7Z" type="integerOrNa"/>
> <xs:element name="_7Z2" type="integerOrNa"/>
> <xs:element name="_VG1" type="integerOrNa"/>
> <xs:element name="_VG2" type="integerOrNa"/>
> <xs:element name="_VH1" type="integerOrNa"/>
> <xs:element name="_VH2" type="integerOrNa"/>
> <xs:element name="_8A1" type="integerOrNa"/>
> <xs:element name="_8A2" type="integerOrNa"/>
> <xs:element name="_8B" type="integerOrNa"/>
> <xs:element name="_8C" type="integerOrNa"/>
> <xs:element name="_8D" type="integerOrNa"/>
> <xs:element name="_8E" type="integerOrNa"/>
> <xs:element name="_VW" type="integerOrNa"/>
> <xs:element name="_VX" type="integerOrNa"/>
> <xs:element name="_VQ" type="integerOrNa"/>
> <xs:element name="_8J" type="integerOrNa"/>
> <xs:element name="_VI" type="integerOrNa"/>
> <xs:element name="_8K" type="integerOrNa"/>
> <xs:element name="_SZ" type="integerOrNa"/>
> <xs:element name="_8L" type="integerOrNa"/>
> <xs:element name="_VY" type="integerOrNa"/>
> <xs:element name="_VJ" type="integerOrNa"/>
> <xs:element name="_VK" type="integerOrNa"/>
> <xs:element name="_ZE" type="integerOrNa"/>
> <xs:element name="_YQ" type="integerOrNa"/>
> <xs:element name="_YR" type="integerOrNa"/>
> <xs:element name="_YS" type="integerOrNa"/>
> <xs:element name="_YT" type="integerOrNa"/>
> <xs:element name="_XQ" type="integerOrNa"/>
> <xs:element name="_YU" type="integerOrNa"/>
> <xs:element name="_SS" type="integerOrNa"/>
> <xs:element name="_YV" type="integerOrNa"/>
> <xs:element name="_ST" type="integerOrNa"/>
> <xs:element name="_ZJ" type="integerOrNa"/>
> <xs:element name="_YY" type="integerOrNa"/>
> <xs:element name="_YZ" type="integerOrNa"/>
> <xs:element name="DIRIGEANT_SECTION" type="dirigeantSection"/>
> <xs:element name="ADMINISTRATEUR_SECTION" type="administrateurSection"/>
> <xs:element name="_SHARBVDIND" type="indicatorType"/>
> </xs:sequence>
> <xs:attribute use="required" type="siretType" name="siretNumber"></xs:attribute>
> <xs:attribute use="required" type="xs:date" name="closingDate"></xs:attribute>
> </xs:complexType>
>
> <xs:complexType name="transferedDataType">
> <xs:sequence minOccurs="0" maxOccurs="unbounded">
> <xs:element name="RECORD" type="recordType"></xs:element>
> </xs:sequence>
> </xs:complexType>
>
> <xs:element type="transferedDataType" name="TRANSFERED_DATA"></xs:element>
>
> </xs:schema>
>
>
  Réponse avec citation
Vieux 14/02/2008, 16h58   #3
FOST©
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

loki a écrit :
> surtout pas TxmlDocument ! pour 100Mo uniquement Sax ...


Oui j'étais en train de regarder SAX sur sourceforge justement.

> regarde sur torry.net le composant Alcinoe (TalXmlDocument) ... ou sur sourceforge.
> ca tiens dans une seule unité. C'est un composant qui fonctionne comme le
> TXMLDocument (meme propriété) mais qui te permet de faire du sax, c'est donc simple
> et pratique
>
> sinon y a pierre y qui à fait un truc aussi je pense


Ben l'est où Pierrot ? Tu l'as fait fuir je crois ....

> a++
> stephane
>

  Réponse avec citation
Vieux 14/02/2008, 17h03   #4
loki
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

essaye ca :
http://sourceforge.net/projects/alcinoe/

y a une demo benchmark en plus

a++
stephane



"FOST©" <exe@dll.com> wrote in message news:fp1s0u$968$1@sd-6836.dedibox.fr...

> loki a écrit :

>> surtout pas TxmlDocument ! pour 100Mo uniquement Sax ...

>
> Oui j'étais en train de regarder SAX sur sourceforge justement.
>

>> regarde sur torry.net le composant Alcinoe (TalXmlDocument) ... ou sur sourceforge.
>> ca tiens dans une seule unité. C'est un composant qui fonctionne comme le
>> TXMLDocument (meme propriété) mais qui te permet de faire du sax, c'est donc simple
>> et pratique
>>
>> sinon y a pierre y qui à fait un truc aussi je pense

>
> Ben l'est où Pierrot ? Tu l'as fait fuir je crois ....
>

>> a++
>> stephane
>>
  Réponse avec citation
Vieux 14/02/2008, 17h14   #5
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

FOST© a utilisé son clavier pour écrire :
> loki a écrit :
>> surtout pas TxmlDocument ! pour 100Mo uniquement Sax ...

>
> Oui j'étais en train de regarder SAX sur sourceforge justement.
>
>> regarde sur torry.net le composant Alcinoe (TalXmlDocument) ... ou sur
>> sourceforge.
>> ca tiens dans une seule unité. C'est un composant qui fonctionne comme le
>> TXMLDocument (meme propriété) mais qui te permet de faire du sax, c'est
>> donc simple et pratique
>>
>> sinon y a pierre y qui à fait un truc aussi je pense

>
> Ben l'est où Pierrot ? Tu l'as fait fuir je crois ....


PrYXMLReader tu veux dire, LE parser XML de ouf qui tue sa mère ? LE
parser HTML compatible HTML mal formé ? LE Parser X[HT]ML qui va
bientôt supporter les sélecteurs CSS 3 si quelqu'un le demande ?

:-)

--
Pierre Y.


  Réponse avec citation
Vieux 14/02/2008, 17h16   #6
FOST©
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

Pierre Y. a écrit :
> PrYXMLReader tu veux dire, LE parser XML de ouf qui tue sa mère ? LE
> parser HTML compatible HTML mal formé ? LE Parser X[HT]ML qui va bientôt
> supporter les sélecteurs CSS 3 si quelqu'un le demande ?
>
> :-)


C'est-y pas wonderful mon ami ?... Mais où c'est-y qu'on le trouve le PrYXMLReader two thousand height ?...

  Réponse avec citation
Vieux 14/02/2008, 17h27   #7
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

FOST© a exprimé avec précision :
> Pierre Y. a écrit :
>> PrYXMLReader tu veux dire, LE parser XML de ouf qui tue sa mère ? LE parser
>> HTML compatible HTML mal formé ? LE Parser X[HT]ML qui va bientôt supporter
>> les sélecteurs CSS 3 si quelqu'un le demande ?
>>
>> :-)

>
> C'est-y pas wonderful mon ami ?... Mais où c'est-y qu'on le trouve le
> PrYXMLReader two thousand height ?...


Je t'ai fait un paquet cadeau :-)

http://www.levosgien.net/files/PrYXML_1.2.zip

J'espère que tu vas t'en sortir avec, c'est pas que c'est complexe à
utiliser mais ca *peut* être déroutant.

Celui de loki (mode on se jette des fleurs) est un drop-in replacement
pour le TDOMDocument de Dephi/Microsoft et les autres.

Commence par essayer de lire ton fichier avec TDocument

D := TDocument.Create;
D.ParseFile('Fichier.xml');
D.Root....

Ca dépend de ce que tu veux faire. Par exemple je l'ai utilisé avec
Troops pour extraire les formulaires HTML (D.Select['form'] -> NodeList
contenant les noeuds <form ...> ... </form>

Ca donne ça (OnRequestDone d'un THTTPCli ICS) :

procedure TRepeatForm.InfoFormDone(Sender: TObject; RqType :
THttpRequest; ErrCode : Word);
var
i: Integer;

NbForms: Integer;
Forms: TNodeList;
F: TFileStream;
begin
THTTPCli(Sender).RcvdStream.Seek(0,0);
F := TFileStream.Create('tmp.html', fmCreate);
F.Write(THTTPCli(Sender).RcvdStream,
THTTPCli(Sender).RcvdStream.Size);
F.Free;

try
FCurrentPage.Free;
FCurrentPage := TDocument.Create;
FCurrentPage.HTMLCompatible := true;
FCurrentPage.ParseStream(THTTPCli(Sender).RcvdStre am);

Forms := FCurrentPage.Select['form'];
NbForms := Forms.Count;

for i := 1 to NbForms do
ComboBox2.AddItem('Form #' + IntToStr(i), nil);
Combobox2.ItemIndex := 0;

ComboBox2.OnChange(ComboBox2);

StaticText2.Visible := false;
ComboBox1.Enabled := true;
ComboBox2.Enabled := true;
SpeedButton1.Enabled := true;
finally
Button2.Enabled := True;
THTTPCli(Sender).RcvdStream.Free;
THTTPCli(Sender).Free;
end;
end;

Faut voir ce dont tu as besoin. J'envisage sérieusement
l'implémentation des sélecteurs CSS3, bien plus puissants que XPath et
plus marrant aussi pour faire un Parser de Microformats (voir
WikiPedia)

@+

--
Pierre Y.


  Réponse avec citation
Vieux 14/02/2008, 17h36   #8
loki
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

> Celui de loki (mode on se jette des fleurs) est un drop-in replacement

> pour le TDOMDocument de Dephi/Microsoft et les autres.


au fait j'ai essayé de faire une comparaison a l'equope et c'etait plus
ou moins kif kif les stats si je me souvient bien ? il a evolué ton composant
depuis ?

oui le mien c'est tu replaces tes TXmlDocument par TALXmlDocument et c'est tout ...
simple et facile !



> procedure TRepeatForm.InfoFormDone(Sender: TObject; RqType :
> THttpRequest; ErrCode : Word);
> var
> i: Integer;
>
> NbForms: Integer;
> Forms: TNodeList;
> F: TFileStream;
> begin
> THTTPCli(Sender).RcvdStream.Seek(0,0);
> F := TFileStream.Create('tmp.html', fmCreate);
> F.Write(THTTPCli(Sender).RcvdStream,
> THTTPCli(Sender).RcvdStream.Size);
> F.Free;
>
> try
> FCurrentPage.Free;
> FCurrentPage := TDocument.Create;
> FCurrentPage.HTMLCompatible := true;
> FCurrentPage.ParseStream(THTTPCli(Sender).RcvdStre am);
>
> Forms := FCurrentPage.Select['form'];
> NbForms := Forms.Count;
>
> for i := 1 to NbForms do
> ComboBox2.AddItem('Form #' + IntToStr(i), nil);
> Combobox2.ItemIndex := 0;
>
> ComboBox2.OnChange(ComboBox2);
>
> StaticText2.Visible := false;
> ComboBox1.Enabled := true;
> ComboBox2.Enabled := true;
> SpeedButton1.Enabled := true;
> finally
> Button2.Enabled := True;
> THTTPCli(Sender).RcvdStream.Free;
> THTTPCli(Sender).Free;
> end;
> end;
>


ca me surprend un peu ...ca fonctionne bien avec par exemple du codes javacript au millieu ou des commentaires ?

a++
Stephane
  Réponse avec citation
Vieux 14/02/2008, 17h43   #9
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

loki avait prétendu :
>> Celui de loki (mode on se jette des fleurs) est un drop-in replacement
>> pour le TDOMDocument de Dephi/Microsoft et les autres.

>
> au fait j'ai essayé de faire une comparaison a l'equope et c'etait plus
> ou moins kif kif les stats si je me souvient bien ? il a evolué ton composant
> depuis ?


<provoc>
Tu rigoles ? :-)
</provoc>

> oui le mien c'est tu replaces tes TXmlDocument par TALXmlDocument et c'est
> tout ... simple et facile !


Voilà, c'est ce que je disais.

> ca me surprend un peu ...ca fonctionne bien avec par exemple du codes
> javacript au millieu ou des commentaires ?


Y'a plutôt intérêt ;-)

--
Pierre Y.


  Réponse avec citation
Vieux 14/02/2008, 17h46   #10
FOST©
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

Pierre Y. a écrit :
> FOST© a exprimé avec précision :
>> Pierre Y. a écrit :
>>> PrYXMLReader tu veux dire, LE parser XML de ouf qui tue sa mère ? LE
>>> parser HTML compatible HTML mal formé ? LE Parser X[HT]ML qui va
>>> bientôt supporter les sélecteurs CSS 3 si quelqu'un le demande ?
>>>
>>> :-)

>>
>> C'est-y pas wonderful mon ami ?... Mais où c'est-y qu'on le trouve le
>> PrYXMLReader two thousand height ?...

>
> Je t'ai fait un paquet cadeau :-)


manque PrYString :-(


> http://www.levosgien.net/files/PrYXML_1.2.zip

  Réponse avec citation
Vieux 14/02/2008, 18h12   #11
loki
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

ta pas une demo toute bete de ton parser qui parse un fichier xml en mode sax ? je fais vite un test !


"Pierre Y." <pierre.y@gmail.com> wrote in message news:mn.74637d8296e3468d.63766@gmail.com...

> loki avait prétendu :

>>> Celui de loki (mode on se jette des fleurs) est un drop-in replacement
>>> pour le TDOMDocument de Dephi/Microsoft et les autres.

>>
>> au fait j'ai essayé de faire une comparaison a l'equope et c'etait plus
>> ou moins kif kif les stats si je me souvient bien ? il a evolué ton composant
>> depuis ?

>
> <provoc>
> Tu rigoles ? :-)
> </provoc>
>

>> oui le mien c'est tu replaces tes TXmlDocument par TALXmlDocument et c'est
>> tout ... simple et facile !

>
> Voilà, c'est ce que je disais.
>

>> ca me surprend un peu ...ca fonctionne bien avec par exemple du codes
>> javacript au millieu ou des commentaires ?

>
> Y'a plutôt intérêt ;-)
>
> --
> Pierre Y.
>
>
  Réponse avec citation
Vieux 15/02/2008, 08h30   #12
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

FOST© avait prétendu :
> Pierre Y. a écrit :
>> FOST© a exprimé avec précision :
>>> Pierre Y. a écrit :
>>>> PrYXMLReader tu veux dire, LE parser XML de ouf qui tue sa mère ? LE
>>>> parser HTML compatible HTML mal formé ? LE Parser X[HT]ML qui va bientôt
>>>> supporter les sélecteurs CSS 3 si quelqu'un le demande ?
>>>>
>>>> :-)
>>>
>>> C'est-y pas wonderful mon ami ?... Mais où c'est-y qu'on le trouve le
>>> PrYXMLReader two thousand height ?...

>>
>> Je t'ai fait un paquet cadeau :-)

>
> manque PrYString :-(
>
>
>> http://www.levosgien.net/files/PrYXML_1.2.zip


Désolé. J'ai mis le bouzin à jour. Tu peux retélécharger le zip.

--
Pierre Y.


  Réponse avec citation
Vieux 15/02/2008, 08h42   #13
Jean-Pierre Lamon
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

Pierre Y. avait prétendu :

> Désolé. J'ai mis le bouzin à jour. Tu peux retélécharger le zip.


T'as pas une idée ou une piste pour mon problème (2 threads juste avant
le thread du siècle)


  Réponse avec citation
Vieux 15/02/2008, 08h44   #14
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

> ta pas une demo toute bete de ton parser qui parse un fichier xml en mode sax
> ? je fais vite un test !


Commencons par le structure.rdf.u8.gz de DMOZ :

http://rdf.dmoz.org/rdf/

--
Pierre Y.


  Réponse avec citation
Vieux 15/02/2008, 10h30   #15
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

FOST© a formulé la demande :
> Je vais devoir récupérer les infos d'un fichier XML pouvant être assez gros
> (100 mo et plus), et qui répondra au xsd ci-joint. Quelle est la bonne
> méthode pour digérer tout ça de façon efficace (rapide j'entends).
> TXMLDocument ?? Sax ? Autre ?...


J'ai mis à jour le bouzin là :

http://www.levosgien.net/files/PrYXML_1.3.zip

Dedans il y a :
- PrYXMLReader (Mode Evenementiel et DOM) et ses dépendances
- PrYXSLTransformer (et ses dépendances, en l'occurrence une version
patchée de MSXML_2.TLB que j'ai renommé MSXML_4.TLB puisqu'elle est
liée
à la version 4 de MSXML Parser)
- XMLCursor (de feu XMLComponents, patchée aussi parceque j'avais
besoin de quelques fonctionnalités supplémentaires)
- Un petit projet "Bench" et quelques fichiers de test, sur les gros
fichiers ( > 1 ou 2Mo) je vous déconseille l'option "verbeux" car la
mise à jour du TMemo avec quelques centaines de milliers de lignes
est.. comment dire... lente)


Changements par rapports à la version 1.2 :
# J'ai un paquet complet qui regroupe à peu près tout ce que j'utilise
de XML
# J'ai mis à jour TPrYXMLEventReader dans lequel j'avais oublié de
brancher l'évènement OnCDATA

Voilà, si vous trouvez des bugs, utilisez celui de Loki ou faites un
effort pour me les remonter (pierre.y@gmail.com par exemple, ou
pierre<STRIP_THAT>@levosgien.net)

@+

--
Pierre Y.


  Réponse avec citation
Vieux 15/02/2008, 10h31   #16
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

Pierre Y. a utilisé son clavier pour écrire :
> FOST© a formulé la demande :
>> Je vais devoir récupérer les infos d'un fichier XML pouvant être assez gros
>> (100 mo et plus), et qui répondra au xsd ci-joint. Quelle est la bonne
>> méthode pour digérer tout ça de façon efficace (rapide j'entends).
>> TXMLDocument ?? Sax ? Autre ?...

>
> J'ai mis à jour le bouzin là :
>
> http://www.levosgien.net/files/PrYXML_1.3.zip
>
> Dedans il y a :
> - PrYXMLReader (Mode Evenementiel et DOM) et ses dépendances
> - PrYXSLTransformer (et ses dépendances, en l'occurrence une version patchée
> de MSXML_2.TLB que j'ai renommé MSXML_4.TLB puisqu'elle est liée
> à la version 4 de MSXML Parser)
> - XMLCursor (de feu XMLComponents, patchée aussi parceque j'avais besoin de
> quelques fonctionnalités supplémentaires)
> - Un petit projet "Bench" et quelques fichiers de test, sur les gros fichiers
> ( > 1 ou 2Mo) je vous déconseille l'option "verbeux" car la mise à jour du
> TMemo avec quelques centaines de milliers de lignes est.. comment dire...
> lente)
>
>
> Changements par rapports à la version 1.2 :
> # J'ai un paquet complet qui regroupe à peu près tout ce que j'utilise de XML
> # J'ai mis à jour TPrYXMLEventReader dans lequel j'avais oublié de brancher
> l'évènement OnCDATA
>
> Voilà, si vous trouvez des bugs, utilisez celui de Loki ou faites un effort
> pour me les remonter (pierre.y@gmail.com par exemple, ou
> pierre<STRIP_THAT>@levosgien.net)
>
> @+


Ah j'oubliais, le fichier structure de dmoz que j'utilise pour mes
tests il est là aussi (48Mo 7zip -> 630 Mo) :

http://www.levosgien.net/files/dmoz-structure.rdf.7z

@+

--
Pierre Y.


  Réponse avec citation
Vieux 15/02/2008, 16h02   #17
Pierre Y.
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Parser vite et bien un gros XML

Pierre Y. avait soumis l'idée :
>> ta pas une demo toute bete de ton parser qui parse un fichier xml en mode
>> sax ? je fais vite un test !

>
> Commencons par