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

C# Discussion :

[C#/XML] Comment importer les données d'un document XML vers un autre ?


Sujet :

C#

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut [C#/XML] Comment importer les données d'un document XML vers un autre ?
    Bonjour ! Mon problème est le suivant : je dispose de deux documents XML, XMLA et XMLB. Je souhaiterai importer les données du document XMLB à l intèrieur du document XMLB, par exemple dans une balise <item>.

    Le problème est que lorsque je le fais, j ai droit à lerreur suivante :

    The node to be inserted is from a different document context.


    Voici mon code :

    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
     
    //Mon document XMLA
    XmlDocument XmlTmp = new XmlDocument();
    XmlTmp.Load("XMLBloc.xml");
     
    XmlNode NodeTest ;
     
    //Je récupère ici le noeud principal de mon document XMLB,
    // qui est l'attribut d'un objet instancié précédemment
    NodeTest = myItems[0].myXMLItem.DocumentElement;
     
    //je récupère le noeud de XMLA dans lequel je veux ajouter XMLB
    XmlNode NodePere =XmlTmp.ChildNodes.Item(1);
     
     
    //j'ajoute XMLB dans le noeud de XMLA spécifié précédemment
    NodePere.AppendChild(NodeTest);
     
    XmlTmp.Save("MyWonderfulXML.xml");
    Voilà ! Si quelqu'un pouvait m'aider, ce serait formidable !

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Plusieurs surcharges de la méthode Load existe pour le XmlDocument, notamment celle à partir d'un XmlReader
    ce qui permettrait directement je pense
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    XmlDocument XmlTmp = new XmlDocument();
    XmlTmp.Load("XMLBloc.xml");
     
    ...blablabla
     
    XmlNodeReader reader = new XmlNodeReader(XmlTmp);
    XmlDocument XmlNew = new XmlDocument();
    XmlNew.Load(reader);
    ...
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Le problème ici, c'est que Mon document XML père contient déjà des données, et donc je souhaite y ajouter le contenu du document XMLB sans pour autant enlever les données déjà existantes .

    (Merci d'avoir répondu cependant )

  4. #4
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim nodedocdest as XmlNode = ...
     
    Dim node1 As XmlDocumentFragment = base.CreateDocumentFragment
    node1.InnerXml = nodedocsource.OuterXml
     
    nodedocdest.AppendChild(node1)
    désolé, c'est du vb, mais je pense que ca va pas te poser de problème majeur cette petite conversion :p

  5. #5
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 63
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par Olivier Delmotte

    ...désolé, c'est du vb, mais je pense que ca va pas te poser de problème majeur cette petite conversion :p

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    XmlNode  nodedocdest = //...;
     
    XmlDocumentFragment node1 = base.CreateDocumentFragment();
    node1.InnerXml = nodedocsource.OuterXml;
     
    nodedocdest.AppendChild(node1);
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    Merci bien !

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

Discussions similaires

  1. importer des données d'un document excel vers un autre document excel
    Par curieuseInformatique dans le forum Langage
    Réponses: 3
    Dernier message: 20/09/2011, 14h43
  2. Réponses: 28
    Dernier message: 08/10/2009, 18h10
  3. Réponses: 3
    Dernier message: 14/09/2009, 10h56
  4. Réponses: 2
    Dernier message: 22/02/2009, 13h02
  5. Réponses: 2
    Dernier message: 16/10/2006, 11h24

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