Construire un XML ?
Publié : dim. 05/août/2007 10:05
Je tente de reproduire cet XML, et je n'arrive pas à reproduire l'identique !
Apparemment ça ne merdouille que pour le tag
au lieu de ça
Mais ça ne donne rien
Deuxième question, quand j'exporte le XML, PB ajoute un entête
Et voici le code pour tester
Code : Tout sélectionner
<scene version="1.6">
<primitives highestID="1">
<primitive id="1" name="rectangle1" type="rectangle" visible="true" snap="vertex" autoUV="true" groupID="-1">
<tag>User info</tag>
<vertices>
<vertex id="0" x="-384" y="192" z="0" />
<vertex id="1" x="128" y="192" z="0" />
<vertex id="2" x="128" y="-320" z="0" />
<vertex id="3" x="-384" y="-320" z="0" />
</vertices>
<polygons>
<poly mid="0">
<vertex vid="0" u0="-3" v0="-1.5" />
<vertex vid="1" u0="1" v0="-1.5" />
<vertex vid="2" u0="1" v0="2.5" />
<vertex vid="3" u0="-3" v0="2.5" />
</poly>
</polygons>
</primitive>
</primitives>
</scene>
au lieu de ça
j'ai ça<tag>User info</tag>
J'ai essayé en mettant<tag/>
Code : Tout sélectionner
*NodeTag=CreateXMLNode(*NodePrimitive,0,#PB_XML_CData)
Ou
*NodeTag=CreateXMLNode(*NodePrimitive,0,#PB_XML_Comment)

Deuxième question, quand j'exporte le XML, PB ajoute un entête
Je comprends que ça peut être important (pour distinguer de l'unicode), mais dans mon cas je n'en ai pas besoin, donc je bricole en jouant sur l'adresse Peeks(*Mem+38 ) pour afficher le résultat, mais il n'y a pas une solution plus propre d'enlever cet entête ?<?xml version="1.0" encoding="UTF-8"?>
Et voici le code pour tester
Code : Tout sélectionner
;-Création XML
CreateXML(0)
*NodeMain=CreateXMLNode(RootXMLNode(0))
SetXMLNodeName(*NodeMain, "scene")
SetXMLAttribute(*NodeMain, "version", "1.6")
*NodePrimitives=CreateXMLNode(*NodeMain)
SetXMLNodeName(*NodePrimitives, "primitives")
SetXMLAttribute(*NodePrimitives, "highestID", "1")
*NodePrimitive=CreateXMLNode(*NodePrimitives)
SetXMLNodeName(*NodePrimitive, "primitive")
For i = 1 To 7
Read Attribute.s
Read Value.s
SetXMLAttribute(*NodePrimitive, Attribute, Value)
Next i
*NodeTag=CreateXMLNode(*NodePrimitive)
SetXMLNodeName(*NodeTag, "tag")
*NodeVertices=CreateXMLNode(*NodePrimitive)
SetXMLNodeName(*NodeVertices, "vertices")
*NodePolygones=CreateXMLNode(*NodePrimitive)
SetXMLNodeName(*NodePolygones, "polygons")
For i=0 To 3
*NodeVertex=CreateXMLNode(*NodeVertices)
SetXMLNodeName(*NodeVertex, "vertex")
SetXMLAttribute(*NodeVertex, "id", Str(i))
Read x.s
Read y.s
Read z.s
SetXMLAttribute(*NodeVertex, "x", x)
SetXMLAttribute(*NodeVertex, "y", y)
SetXMLAttribute(*NodeVertex, "z", z)
Next i
*NodePoly=CreateXMLNode(*NodePolygones)
SetXMLNodeName(*NodePoly, "poly")
SetXMLAttribute(*NodePoly, "mid", "0")
For i=0 To 3
*NodeVertex=CreateXMLNode(*NodePoly)
SetXMLNodeName(*NodeVertex, "vertex")
SetXMLAttribute(*NodeVertex, "vid", Str(i))
Read u0.s
Read v0.s
SetXMLAttribute(*NodeVertex, "u0", u0)
SetXMLAttribute(*NodeVertex, "v0", v0)
Next i
;-XML --> Texte
*Mem=AllocateMemory(ExportXMLSize(0))
FormatXML(0,#PB_XML_CutSpace)
ExportXML(0,*Mem,ExportXMLSize(0))
;I dont need <?xml version="1.0" encoding="UTF-8"?>
Debug PeekS(*Mem+38) ;<<< Is there another way ?
DataSection
Data.s "id","1"
Data.s "name","rectangle1"
Data.s "type","rectangle"
Data.s "visible","true"
Data.s "snap","vertex"
Data.s "autoUV","true"
Data.s "groupID","-1"
Data.s "-384", "192","0"
Data.s "128", "192","0"
Data.s "128","-320","0"
Data.s "-384","-320","0"
Data.s "-3", "-1.5"
Data.s "1", "-1.5"
Data.s "1", "2.5"
Data.s "-3", "2.5"
EndDataSection