IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

retour a la ligne lors de la création d'élément xml


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    divers
    Inscrit en
    Juillet 2016
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : divers

    Informations forums :
    Inscription : Juillet 2016
    Messages : 11
    Par défaut retour a la ligne lors de la création d'élément xml
    bonjour,

    je revient vers vous pour la poursuite d'un code que ce forum m'a déjà grandement aidé a écrire ( voir mes précédents posts ) pour rappel il s'agit de piocher des éléments dans un fichier .gpx pour les replacer dans une structure xml existante.. jusque la tout va bien , seulement après avoir importé le fichier ainsi crée dans le programme censé le traiter celui ci ne le reconnait pas

    pourtant la structure xml est correcte, par contre en ouvrant un autre fichier qui "marche" dans notepad et en le comparant avec le fichier généré une différence saute aux yeux c'est l'apparence "texte" des deux fichiers qui n'est pas identique ( nombre d'espace etc..

    c'est pourquoi j'ai transformé mon code de :

    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
    34
    35
      Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Dim path1 As String = TextBox2.Text
            Dim path2 As String = TextBox3.Text
            Dim path3 As String = TextBox4.Text
            Dim saisie As String = TextBox1.Text
            'etape1
     
            Dim docvierge As XDocument = XDocument.Load(path2)
            Dim docgpx As XDocument = XDocument.Load(path1)
     
            Dim nsVierge = docvierge.Root.GetDefaultNamespace
     
            Dim symbolTag As XElement
            symbolTag = docvierge.Root...<Symbol>.Single
     
            Dim i As Integer
            i = 0
     
            For Each trkpt In docgpx.Root.Descendants(docgpx.Root.GetDefaultNamespace + "trkpt")
                symbolTag.Add(<<%= nsVierge + "Coordinate" %>>
                                  <<%= nsVierge + "latitude" %>><%= trkpt.@lat %></>
                                  <<%= nsVierge + "longitude" %>><%= trkpt.@lon %></>
                              </>)
     
                i = i + 1
     
            Next
     
            Dim title As XElement
            title = docvierge.Root...<Title>.Single
            title.SetValue(saisie)
     
     
            docvierge.Save(path3)

    a ceci :

    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
    34
    35
     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
     
            Dim path1 As String = TextBox2.Text
            Dim path2 As String = TextBox3.Text
            Dim path3 As String = TextBox4.Text
            Dim saisie As String = TextBox1.Text
            'etape1
     
            Dim docvierge As XDocument = XDocument.Load(path2, LoadOptions.PreserveWhitespace)
            Dim docgpx As XDocument = XDocument.Load(path1)
     
            Dim nsVierge = docvierge.Root.GetDefaultNamespace
     
            Dim symbolTag As XElement
            symbolTag = docvierge.Root...<Symbol>.Single
     
            Dim i As Integer
            i = 0
     
            For Each trkpt In docgpx.Root.Descendants(docgpx.Root.GetDefaultNamespace + "trkpt")
                symbolTag.Add(<<%= nsVierge + "Coordinate" %>>
                                  <<%= nsVierge + "latitude" %>><%= trkpt.@lat %></>
                                  <<%= nsVierge + "longitude" %>><%= trkpt.@lon %></>
                              </>)
     
                i = i + 1
     
            Next
     
            Dim title As XElement
            title = docvierge.Root...<Title>.Single
            title.SetValue(saisie)
     
     
            docvierge.Save(path3)

    pour info la fin du sub ( mais elle ne change rien pour mon problème) j'ai essaye

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    File.WriteAllText(path3, File.ReadAllText(path3).Replace(vbCrLf, vbLf))
     
            MsgBox("end")
            MsgBox(i)
     
        End Sub
    la structure de départ : "doc vierge" un peu raccourcie mias la structure y est...

    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
    34
    35
    36
    37
    ?xml version="1.0" encoding="UTF-8"?>
    <DMG_SITAC xmlns="http://www.eads.com/eplf">
        <Title>TEMPLATE_1RHC</Title>
        <EPLFVersion>2.3</EPLFVersion>
        <CreationDate>2015-06-03T10:31:43.388+02:00</CreationDate>
        <RevisionDate>2015-06-03T10:31:43.388+02:00</RevisionDate>
        <ExpirationDate>2016-06-03T10:31:43.388+02:00</ExpirationDate>
        <Author>ADMIN</Author>
        <Comment></Comment>
        <HelicopterType>NH_90</HelicopterType>
        <Country>FRANCE</Country>
        <EurogridVersion>201</EurogridVersion>
     <ThematicClass>
            <TC_Name>US1</TC_Name>
            <TC_DMG1>true</TC_DMG1>
            <TC_DMG2>true</TC_DMG2>
            <Overlay>
                <OvlName>WRK20</OvlName>
                <OvlNumber>20</OvlNumber>
                <OvlDMG1>false</OvlDMG1>
                <OvlDMG2>false</OvlDMG2>
                <SecLevel> </SecLevel>
                <Symbol>
                    <ID_EuroGridSymbol>113</ID_EuroGridSymbol>
                    <Colour>3</Colour>
                    <LineType>2</LineType>
                    <CtrlFlag>0</CtrlFlag>
                    <CtrlFlag>0</CtrlFlag>
                    <Text></Text>
                    <Course>0</Course>
                    <Speed>0</Speed>
                    <ScaleMin>100</ScaleMin>
                    <ScaleMax>500</ScaleMax>
                </Symbol>
            </Overlay>
        </ThematicClass>
    </DMG_SITAC>

    et maintenant voici ce que j'obtient au niveau de la balise "symbol" (dans l'espace de code) et la est mon problème tout apparait sur une seule ligne!



    alors que j'obtient : et malgré deux heures de recherche je sèche encore une fois erf...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <Symbol>
                    <ID_EuroGridSymbol>113</ID_EuroGridSymbol>
                    <Colour>3</Colour>
                    <LineType>2</LineType>
                    <CtrlFlag>0</CtrlFlag>
                    <CtrlFlag>0</CtrlFlag>
                    <Text></Text>
                    <Course>0</Course>
                    <Speed>0</Speed>
                    <ScaleMin>100</ScaleMin>
                    <ScaleMax>500</ScaleMax>
                <Coordinate><latitude>49.266857</latitude><longitude>5.657061</longitude></Coordinate><Coordinate><latitude>49.316164</latitude><longitude>5.647001</longitude></Coordinate>   etc .. </Symbol>
    le tout sur une seule ligne..

    alors que je souhaite (pour coller le plus possible au modèle de fichier qui "marche") avoir :

    ( les balises latitude et longitude ainsi que toutes les balises du document devant être en "texte" décalée de 4 espaces par rapport a coordinate ou les unes par rapport aux 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
    <Symbol>
                    <ID_EuroGridSymbol>113</ID_EuroGridSymbol>
                    <Colour>3</Colour>
                    <LineType>2</LineType>
                    <CtrlFlag>0</CtrlFlag>
                    <CtrlFlag>0</CtrlFlag>
                    <Text></Text>
                    <Course>0</Course>
                    <Speed>0</Speed>
                    <ScaleMin>100</ScaleMin>
                    <ScaleMax>500</ScaleMax>
                    <Coordinate>
                        <Latitude>..<Latitude>
                        <Longitude>..<Longitude>
                    <Coordinate>
    </Symbol>

    merci a tous d'avance!!

  2. #2
    Membre Expert Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Hello,

    Pour info, un fichier Xml peut très bien être entièrement écrit sur une seule ligne... oui oui.

    Les retours chariots sont là pour nous, simples humains, à mieux lire les informations et la hiérarchie des éléments.
    Mais dans le code, tu navigues entre les balises, sans prendre en compte les espaces et retours chariots...

    Donc en fait ton problème, c'est que le fichier généré n'est pas valide... MAis tu présumes que la structure est juste...
    J'en doute.

    As-tu utilisé un logiciel pour vérifier ton fichier xml ? (Notepadd++ avec plugin XMLTools par exemple)

    Et, au cas où ce n'ets pas juste une erreur de copier/coller sur ce site, ta toute première balise, il manque le < :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ?xml version="1.0" encoding="UTF-8"?>

Discussions similaires

  1. Passer un paramètre à une fonction lors d'une création d'élément
    Par tintin72 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/08/2012, 14h49
  2. Réponses: 6
    Dernier message: 08/03/2012, 01h30
  3. Réponses: 4
    Dernier message: 27/01/2012, 15h43
  4. [XSLT]enlever les retours à la ligne lors de la génération d'un xml
    Par Jean-Marie64 dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 20/12/2007, 11h08
  5. [Mail] retour à la ligne lors reception d'email
    Par S~C dans le forum Langage
    Réponses: 5
    Dernier message: 20/06/2006, 17h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo