'Création du fichier XML de sortie Dim XmlDoc As XmlDocument = New XmlDocument() 'Création du fichier XmlDoc.LoadXml("<STExchangeFile></STExchangeFile>") Dim oCreation = XmlDoc.CreateProcessingInstruction("xml", "version='1.0' encoding='UTF-8'standalone ='yes'") XmlDoc.InsertBefore(oCreation, XmlDoc.ChildNodes.Item(0)) 'Création des noeuds Dim ElemfileHeader As XmlElement = XmlDoc.CreateElement("fileHeader") 'ElemfileHeader pour le noeud [fileHeader][/fileHeader] Dim ElemcontentHeader As XmlElement = XmlDoc.CreateElement("contentHeader") 'ElemcontentHeader pour le noeud [contentHeader][/contentHeader] Dim Elemprogram As XmlElement = XmlDoc.CreateElement("program") 'Elemprogram pour le noeud [program][/program] Dim ElemidentProgram As XmlElement = XmlDoc.CreateElement("identProgram") 'ElemidentProgram pour le noeud [identProgram][/identProgram] Dim ElemSTSource As XmlElement = XmlDoc.CreateElement("STSource") 'Elemprogram pour le noeud [STSource][/STSource] Dim ElemdataBlock As XmlElement = XmlDoc.CreateElement("dataBlock") 'Elemprogram pour le noeud [dataBlock][/dataBlock] Dim Elemvariables As XmlElement = XmlDoc.CreateElement("variables") 'Elemprogram pour le noeud [variables][/variables] Dim Elemcomment As XmlElement = XmlDoc.CreateElement("comment") 'Elemprogram pour le noeud [comment][/comment] Dim Elemattribute_1 As XmlElement = XmlDoc.CreateElement("attribute") 'Elemprogram pour le noeud [attribute][/attribute] Dim Elemattribute_2 As XmlElement = XmlDoc.CreateElement("attribute") 'Elemprogram pour le noeud [attribute][/attribute] 'En-tête du fichier à ne pas modifier 'Ajout des attributs pour l'élément "fileHeader" ElemfileHeader.SetAttribute("company", "Schneider Automation") ElemfileHeader.SetAttribute("product", "Unity Pro XL V8.0 - 131118") ElemfileHeader.SetAttribute("dateTime", "date_and_time#2014-8-20-10:19:36") ElemfileHeader.SetAttribute("content", "Fichier source ST") ElemfileHeader.SetAttribute("DTDVersion", "41") 'Ajout des attributs pour l'élément "contentheader" ElemcontentHeader.SetAttribute("name", "Station") ElemcontentHeader.SetAttribute("version", "0.0.388") ElemcontentHeader.SetAttribute("dateTime", "date_and_time#2014-6-10-15:32:22") 'Remplissage du noeud STSource ElemSTSource.InnerText = "(*ANIMATION TOR*)" + vbCrLf + "(*ANIMATION ENTREES TOR *)" + vbCrLf For index_1 = 0 To Nblignes ElemSTSource.InnerText = ElemSTSource.InnerText + tab(index_1, Nbcolonnes) + ":=" + tab(index_1, 2) + ";" + vbCrLf Next 'Partie à modifier For i As Integer = 0 To 2 'Ajout des balises enfants à la balise datablock ElemdataBlock.AppendChild(Elemvariables) 'Ajout des attributs pour l'élément "variables" Elemvariables.SetAttribute("name", "E_RES_1_" & i) Elemvariables.SetAttribute("typeName", "EBOOL") Elemvariables.SetAttribute("topologicalAddress", "%I0.1.0") 'Remplissage du noeud "comment" Elemcomment.InnerText = "RESERVE" 'Ajout des balises enfants à la balise variables Elemvariables.AppendChild(Elemcomment) Elemvariables.AppendChild(Elemattribute_1) Elemvariables.AppendChild(Elemattribute_2) 'Ajout des attributs pour l'élément "attribut_1" Elemattribute_1.SetAttribute("name", "TimeStampCapability") Elemattribute_1.SetAttribute("value", "0") 'Ajout des attributs pour l'élément "attribut_2" Elemattribute_2.SetAttribute("name", "TimeStampSource") Elemattribute_2.SetAttribute("value", "0") Next 'Ajout des balises enfants à la balise program Elemprogram.AppendChild(ElemidentProgram) Elemprogram.AppendChild(ElemSTSource) 'Ajout des balises parents au document XmlDoc.DocumentElement.AppendChild(ElemfileHeader) XmlDoc.DocumentElement.AppendChild(ElemcontentHeader) XmlDoc.DocumentElement.AppendChild(Elemprogram) XmlDoc.DocumentElement.AppendChild(ElemdataBlock) 'Sauvegarde du fichier XmlDoc.Save(Dossier_fichier & "Animations.xst") 'libération du fichier pour ouverture depuis notepad 'Fin du programme MessageBox.Show("Génération terminée")
For i As Integer = 0 To Nblignes - 1
Dim Elemvariables As XmlElement = XmlDoc.CreateElement("variables") 'Elemprogram pour le noeud [variables]/variables
Dim Elemcomment As XmlElement = XmlDoc.CreateElement("comment") 'Elemprogram pour le noeud [comment]/comment
Dim Elemattribute_1 As XmlElement = XmlDoc.CreateElement("attribute") 'Elemprogram pour le noeud [attribute]/attribute
Dim Elemattribute_2 As XmlElement = XmlDoc.CreateElement("attribute") 'Elemprogram pour le noeud [attribute]/attribute
'Ajout des attributs pour l'élément "variables"
Elemvariables.SetAttribute("name", tab(i, 4))
Elemvariables.SetAttribute("typeName", "EBOOL")
Elemvariables.SetAttribute("topologicalAddress", tab(i, 2))
'Remplissage du noeud "comment"
Elemcomment.InnerText = tab(i, 5)
'Ajout des balises enfants à la balise variables
Elemvariables.AppendChild(Elemcomment)
Elemvariables.AppendChild(Elemattribute_1)
Elemvariables.AppendChild(Elemattribute_2)
'Ajout des attributs pour l'élément "attribut_1"
Elemattribute_1.SetAttribute("name", "TimeStampCapability")
Elemattribute_1.SetAttribute("value", "0")
'Ajout des attributs pour l'élément "attribut_2"
Elemattribute_2.SetAttribute("name", "TimeStampSource")
Elemattribute_2.SetAttribute("value", "0")
'Ajout des balises enfants à la balise datablock
ElemdataBlock.AppendChild(Elemvariables)
Next
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionImports System Imports System.Collections.Generic Public Class Quentin22breizhDonnees Public Sub New() DataBlock = New List(Of Variables)() End Sub Public Property FileHeader() As FichierHeader Public Property ContenHeader() As ContenuHeader Public Property Program() As Programme Public Property DataBlock() As List(Of Variables) End Class Public Class FichierHeader Public Property Compagnie() As String Public Property Produit() As String Public Property DateXml() As String Get Return "date_and_time#" & [Date].ToString("yyyy-MM-dd-HH:mm:ss") End Get Set(ByVal value As String) [Date] = Date.Parse(value.Replace("date_and_time#", "")) End Set End Property Public Property [Date]() As Date Public Property Contenu() As String Public Property DTDVersion() As String End Class Public Class ContenuHeader Public Property Nom() As String Public Property Version() As String Public Property [Date]() As Date Public Property DateXml() As String Get Return "date_and_time#" & [Date].ToString("yyyy-MM-dd-HH:mm:ss") End Get Set(ByVal value As String) [Date] = Date.Parse(value.Replace("date_and_time#", "")) End Set End Property End Class Public Class Programme Public Property Identite() As String Public Property STSource() As String End Class Public Class Variables Public Sub New() Attributs = New List(Of Attribut)() End Sub Public Property Nom() As String Public Property TypeNom() As String Public Property TopologicalAddress() As String Public Property Commentaire() As String Public Property Attributs() As List(Of Attribut) End Class Public Class Attribut Public Property Nom() As String Public Property Valeur() As String End Class
Dim donnees As New Quentin22breizhDonnees() donnees.FileHeader = New FichierHeader With {.Compagnie = "Schneider Automation", .Produit = "Unity Pro XL V8.0 - 131118", .Date = Date.Parse("20/08/2014 10:19:36")} donnees.ContenHeader = New ContenuHeader With {.Nom = "Station", .Version = "0.0.388", .Date = Date.Parse("10/06/2014 15:32:22")} Dim stSource As New StringBuilder() stSource.AppendLine("(*ANIMATION TOR*)") stSource.AppendLine("(*ANIMATION ENTREES TOR *)") stSource.AppendLine("0:=0;") stSource.AppendLine("1:=1;") stSource.AppendLine("2:=2;") donnees.Program = New Programme With {.Identite = "", .STSource = stSource.ToString()} Dim variable As Variables = New Variables With {.Nom = "E_BUMPERS_OK", .TypeNom = "EBOOL", .TopologicalAddress = "%I0.1.3", .Commentaire = "E_BUMPERS_OK"} variable.Attributs.Add(New Attribut With {.Nom = "TimeStampCapability", .Valeur = "0"}) variable.Attributs.Add(New Attribut With {.Nom = "TimeStampSource", .Valeur = "0"}) donnees.DataBlock.Add(variable) Dim variable2 As Variables = New Variables With {.Nom = "TAB_ANIM_TOR", .TypeNom = "ARRAY[0..99] OF INT", .TopologicalAddress = "%MW800"} variable2.Attributs.Add(New Attribut With {.Nom = "TimeStampSource", .Valeur = "3"}) donnees.DataBlock.Add(variable2) Dim variable3 As Variables = New Variables With {.Nom = "E_BP_NAVETTE_AR", .TypeNom = "EBOOL", .TopologicalAddress = "%I0.1.11", .Commentaire = "RECUL_NAVETTE_BOITIER_1PC1"} variable3.Attributs.Add(New Attribut With {.Nom = "TimeStampCapability", .Valeur = "0"}) variable3.Attributs.Add(New Attribut With {.Nom = "TimeStampSource", .Valeur = "0"}) donnees.DataBlock.Add(variable3)
Private Sub Quentin22breizhXML(ByVal Donnee As Quentin22breizhDonnees) Dim xDoc As New XDocument(New XElement("STExchangeFile", New XElement("fileHeader", New XAttribute("company", Donnee.FileHeader.Compagnie), New XAttribute("product", Donnee.FileHeader.Produit), New XAttribute("dateTime", Donnee.FileHeader.DateXml)), New XElement("contentHeader", New XAttribute("name", Donnee.ContenHeader.Nom), New XAttribute("version", Donnee.ContenHeader.Version), New XAttribute("dateTime", Donnee.ContenHeader.DateXml)), New XElement("program", New XElement("identProgram", Donnee.Program.Identite), New XElement("STSource", Donnee.Program.STSource)), New XElement("dataBlock", From variable In Donnee.DataBlock Select New XElement("variables", New XAttribute("name", variable.Nom), New XAttribute("topologicalAddress", variable.TopologicalAddress), New XElement("comment", variable.Commentaire), From attribut In variable.Attributs Select New XElement("attribute", New XAttribute("name", attribut.Nom), New XAttribute("value", attribut.Valeur)))))) xDoc.Save("Animations.xst") End Sub
Quentin22breizhXML(donnees)
<?xml version="1.0" encoding="utf-8"?> <STExchangeFile> <fileHeader company="Schneider Automation" product="Unity Pro XL V8.0 - 131118" dateTime="date_and_time#2014-08-20-10:19:36" /> <contentHeader name="Station" version="0.0.388" dateTime="date_and_time#2014-06-10-15:32:22" /> <program> <identProgram></identProgram> <STSource>(*ANIMATION TOR*) (*ANIMATION ENTREES TOR *) 0:=0; 1:=1; 2:=2; </STSource> </program> <dataBlock> <variables name="E_BUMPERS_OK" topologicalAddress="%I0.1.3"> <comment>E_BUMPERS_OK</comment> <attribute name="TimeStampCapability" value="0" /> <attribute name="TimeStampSource" value="0" /> </variables> <variables name="TAB_ANIM_TOR" topologicalAddress="%MW800"> <comment /> <attribute name="TimeStampSource" value="3" /> </variables> <variables name="E_BP_NAVETTE_AR" topologicalAddress="%I0.1.11"> <comment>RECUL_NAVETTE_BOITIER_1PC1</comment> <attribute name="TimeStampCapability" value="0" /> <attribute name="TimeStampSource" value="0" /> </variables> </dataBlock> </STExchangeFile>