Bonjour,
Je crée un vbscript qui parcours plusieurs fichiers séquentiels à fin de rassembler toutes les données dans un seul fichier xml.
J'ai besoin d'utiliser la méthode:
, comme ça si le script à déja été lancé et que fichier xml existe déjà, je n'ajoute que les nouveau éléments.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.nodeFromID(stopId)
et je lis dans la doc msdn:
Du coup, lorsque je crée mon fichier j'ajoute le DTD:To reference a node with nodefromID, the node must be typed as ID in the schema or document type definition (DTD). Simply naming an attribute "ID" does not set its data type.
puis je remplis mon xmlDoc avec des choses plus merveilleuses les unes que les autres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Function GetNewXmlWaypointDoc(xmlDoc) set xmlWriter = CreateObject("MSXML2.MXXMLWriter") xmlWriter.output = "" xmlWriter.indent = True xmlWriter.encoding = "ISO-8859-1" xmlWriter.standalone = True xmlWriter.startDocument xmlWriter.startDTD "Waypoints", "", "" xmlWriter.elementDecl "Waypoints", "(Stop*)" xmlWriter.attributeDecl "Waypoints", "datum", "CDATA", "#REQUIRED", "" xmlWriter.elementDecl "Stop", "(Waypoint+)" xmlWriter.attributeDecl "Stop", "id", "ID", "#REQUIRED", "" xmlWriter.elementDecl "Waypoint", "(Latitude, Longitude)" xmlWriter.attributeDecl "Waypoint", "date", "CDATA", "#REQUIRED", "" xmlWriter.elementDecl "Latitude", "ANY" xmlWriter.elementDecl "Longitude", "ANY" xmlWriter.endDTD set saxAttributes = CreateObject("MSXML2.SAXAttributes") saxAttributes.addAttribute "", "", "datum", "CDATA", "WGS84" xmlWriter.startElement "", "", "Waypoints", saxAttributes xmlWriter.endElement "", "", "Waypoints" saxAttributes.Clear xmlWriter.endDocument xmlWriter.flush If NOT xmlDoc.LoadXML(xmlWriter.output) Then MsgBox xmlDoc.parseError.reason End If Set xmlWriter = Nothing End Function
Enfin pour que la présentation soit jolie je veux parser mon xmlDoc et le sauver.
Je procède comme ceci:
Ca sauve bien le fichier xml mais sans le dtd... comment faire pour que le dtd soit ajouté au fichier?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 Function ParseAndSave(filePath, xmlDoc) set xmlWriter = CreateObject("MSXML2.MXXMLWriter") set xmlReader = CreateObject("MSXML2.SAXXMLReader") Set xmlStream = CreateObject("ADODB.STREAM") xmlStream.Open xmlStream.Charset = "ISO-8859-1" xmlWriter.output = xmlStream Set xmlReader.contentHandler = xmlWriter Set xmlReader.DTDHandler = xmlWriter Set xmlReader.errorHandler = xmlWriter xmlReader.parse xmlDoc xmlWriter.flush xmlStream.SaveToFile filePath, 2 xmlStream.Close Set xmlStream = Nothing Set xmlReader = Nothing Set xmlWriter = Nothing End Function
Partager