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

Linq Discussion :

Création d'un fichier XML et attributs xmlns [Débutant]


Sujet :

Linq

  1. #1
    Membre habitué Avatar de DeVaK
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 140
    Points
    140
    Par défaut Création d'un fichier XML et attributs xmlns
    Bonjour,

    J'ai un petit problème bien frustrant : j'arrive à créer le fichier xml entier sans soucis, sauf les attributs xmlns.

    Voici ce que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    XNamespace xmlns = XNamespace.Get(@"http://www.urlidentique.fr");
                XNamespace xsi = @"http://www.w3.org/2001/XMLSchema-instance";
                string schemaLocation = "http://www.urlidentique.fr programmes.xsd";
     
                XDocument doc = new XDocument(new XElement("Operations",
                                                new XAttribute("xmlns", "www.urlidentique.fr"),
                                                new XAttribute(xmlns + "xsi", xsi.NamespaceName),
                                                new XAttribute(xmlns + "schemaLocation", schemaLocation),
                                                operation));
    Voici ce que je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="UTF-8"?>
    <Operations xmlns="http://www.urlidentique.fr"
                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                xsi:schemaLocation="http://www.urlidentique.fr programmes.xsd">
      <Operation>
        ...
      </Operation>
    </Operations>
    Quand je commente l'instruction qui ajoute l'attribut xmlns il me sort des attributs avec p1 / p2 qui sortent de je ne sais où (valeur par défaut de XNamespace j'imagine).

    Quand je laisse en l'état, il écrit un fichier xml complètement tronqué et l'erreur suivante :

    Le préfixe '' ne peut pas être redéfini à partir de '' vers 'www.urlidentique.fr' au sein de la même balise d'élément de début.

    Merci de votre aide!

  2. #2
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    En général j'utilise ceci pour faire ce que tu souhaites faire :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    var xDoc = new XmlDocument();
    xDoc.DocumentElement.SetAttribute("xmlns:xsi", "http://www.w3.org/2001/XMLSchema-instance");
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  3. #3
    Membre habitué Avatar de DeVaK
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 140
    Points
    140
    Par défaut
    Eee, c'est compatible avec les XDocument?

    Ou alors tu créé une partie du document de cette façon puis tu le load grâce à XDocument?

  4. #4
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    j'ai survolé et n'ai pas vu que c'était du XDocument. Voici l'équivalent il me semble :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    XNamespace xmlns = "http://tonurl/toto";
    doc.Root.Name = xmlns + doc.Root.Name.LocalName;
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  5. #5
    Membre habitué Avatar de DeVaK
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 140
    Points
    140
    Par défaut
    Merci de ta réponse, elle m'a aidé, j'ai avance.

    Dernier problème, je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    XDocument doc = new XDocument(new XElement("Operations", operation));
     
                XNamespace xmlns = "http://www.immobilier-stock-exchange.fr";
                XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
                string schemaLocation = "http://www.immobilier-stock-exchange.fr programmes.xsd";
     
                doc.Root.Name = xmlns + doc.Root.Name.LocalName;
                doc.Root.Add(new XAttribute(xmlns + "xsi", xsi.NamespaceName));
                doc.Root.Add(new XAttribute(xsi + "schemaLocation", schemaLocation));
    Et j'obtiens ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?xml version="1.0" encoding="utf-8"?>
    <Operations 
        p1:xsi="http://www.w3.org/2001/XMLSchema-instance" 
        p2:schemaLocation="http://www.immobilier-stock-exchange.fr programmes.xsd"
        xmlns:p2="http://www.w3.org/2001/XMLSchema-instance" 
        xmlns:p1="http://www.immobilier-stock-exchange.fr" 
        xmlns="http://www.immobilier-stock-exchange.fr">
    Désolé d'être un peu boulet pour le coup mais j'ai du mal ce matin xD.

  6. #6
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Le SchemaLocation est également un Namespace

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    XNamespace schemaLocation = XNamespace.Get("http://www.site.fr programmes.xsd");
     
    doc.Root.Add(new XAttribute(XNamespace.Xmlns + "xsi", xsi));
    doc.Root.Add(new XAttribute(xsi + "schemaLocation", schemaLocation));
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  7. #7
    Membre habitué Avatar de DeVaK
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2013
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2013
    Messages : 45
    Points : 140
    Points
    140
    Par défaut
    Merci pour la précision.

    Mais cela n'a pas réglé le problème des p1 / p2 qui apparaissent en trop hélas.

    Pourtant ils ont juste l'air d'être des alias pour le xmlns, non?

    P.S : Du coup j'en ai oublié de masqué l'url... Tant pis c'est pas bien grave .

    Trouvé! En fait faut écrire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    XDocument doc = new XDocument(new XElement("Operations"), operation);
     
                XNamespace xmlns = "http://www.immobilier-stock-exchange.fr";
                XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
                XNamespace schemaLocation = XNamespace.Get("http://www.immobilier-stock-exchange.fr programmes.xsd");
     
                doc.Root.Name = xmlns + doc.Root.Name.LocalName;
                doc.Root.Add(new XAttribute(XNamespace.Xmlns + "xsi", xsi.NamespaceName));
                doc.Root.Add(new XAttribute(xsi + "schemaLocation", schemaLocation));
    Merci de ton aide, je marque le sujet résolu!

  8. #8
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Essaie avec ça :

    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    XNamespace xsi = "http://www.w3.org/2001/XMLSchema-instance";
    doc.Root.Add(new XAttribute(XNamespace.Xmlns + "xsi", xsi));

    [EDIT] : Entre temps tu as mis en résolu donc c'est cool
    [EDIT2] : J'ai édité les messages afin de masquer l'URL de ton site
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JDOM] Création d'un fichier xml avec jdom
    Par fabricew59 dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 09/08/2006, 11h17
  2. [XSD] Création d'un fichier XML
    Par Taylor² dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 06/06/2006, 22h16
  3. Création d'un fichier XML
    Par fantasio31 dans le forum Général Python
    Réponses: 2
    Dernier message: 09/09/2004, 17h06
  4. [XML] Création d'un fichier XML
    Par TheDarkLewis dans le forum Langage
    Réponses: 6
    Dernier message: 24/07/2004, 18h27
  5. ligne d'entête création d'un fichier XML
    Par cduterme dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 23/02/2004, 15h30

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