begin process at 2010 02 10 16:36:59
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Base de données

 > 

XML

 > 

Problème pour écrire un XmlNode


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème pour écrire un XmlNode

jeudi 17 juillet 2008 à 22:16:48 | Problème pour écrire un XmlNode

gregory__forel

Bonjour à tous,

Je voudrais ajouter un nouveau noeud  pour que
<NoeudParent>
</NoeudParent>

devienne:
<NoeudParent>
      <NoeudEnfant>
      </NoeudEnfant>
</NoeudParent>

Avec mon code, ca me donne:
<NoeudParent>
      <NoeudEnfant />
</NoeudParent>

Le problème, c'est  qu'avec la solution obtenue par mon code, je n'arrive plus à ajouter de noeud au NoeudEnfant. Au lieu de l'ajouter comme ceci:
<NoeudParent>
      <NoeudEnfant>
          <NoeudEnfant2>
          </NoeudEnfant2>
      </NoeudEnfant>
</NoeudParent>

Il l'ajoute comme cela, comme si NoeudEnfant2 ne faisait pas partie de NoeudEnfant:
<NoeudParent>
      <NoeudEnfant />
      <NoeudEnfant2 />
</NoeudParent>

Voilà mon code:

Dim

xmlElement As System.Xml.XmlElement = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant")
mParentNode.AppendChild(xmlElement) '  mParentNode est le noeud parent (NoeudParent) sur je voudrais ajouter le noeud enfant
xmlDoc.Save(path
) ' Save xmlDocument


MERCI A TOUS POUR VOTRE AIDE !
jeudi 17 juillet 2008 à 23:47:26 | Re : Problème pour écrire un XmlNode

Kevin.Ory

Salut,

Pour ajouter un noeud à l'enfant, il faut l'ajouter à la bonne place...

Dim xmlElement As System.Xml.XmlElement = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant")
mParentNode.AppendChild(xmlElement)
Dim xmlElement2 As System.Xml.XmlElement  = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant2")
xmlElement.AppendChild(xmlElement2)

te donne :
<NoeudParent>
      <NoeudEnfant>
          <NoeudEnfant2 />
      </NoeudEnfant>
</NoeudParent>

vendredi 18 juillet 2008 à 14:45:54 | Re : Problème pour écrire un XmlNode

gregory__forel

Salut Kevin, et merci pour ta réponse. Ton exemple fonctionne parfaitement lorsque toutes les opérations sont effectuées à la suite, on crée NoeudEnfant et NoeudEnfant 2 et on sauve le projet. Cela donne effectivement le bon résultat.

Le problème, c'est que je ne crée pas NoeudEnfant et NoeudEnfant 2 au même moment. C'est l'utilisateur du programme qui les ajoute au fur et à mesure.

Donc si je fais:
Dim xmlElement As System.Xml.XmlElement = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant")
mParentNode.AppendChild(xmlElement)

je sauve le projet, ca me donne:
<NoeudParent>
      <NoeudEnfant />
</NoeudParent>


Si je veux maintenant ajouter un NoeudEnfant 2 à NoeudEnfant, je n'arrive pas à obtenir le bon résultat, et le programme recommence à écrire les noeud l'un en dessous de l'autre.
<NoeudParent>
      <NoeudEnfant />
      <NoeudEnfant2 />
</NoeudParent>

Est-il possible de créer NoeudEnfant directement comme ca ?
<NoeudParent>
      <NoeudEnfant>
      </NoeudEnfant>
</NoeudParent>

Merci pour ton aide !!
vendredi 18 juillet 2008 à 17:17:51 | Re : Problème pour écrire un XmlNode

gregory__forel

Réponse acceptée !

Bon... j'ai une solution, pas très belle, mais j'ai pas le temps de faire mieux pour l'instant.

Je force à écrire le "end-tag" (</NoeudEnfant>) en ajoutant un InnerText vide, c'est tout.

xmlElement .InnerText =

""

En espérant que ca en aide certains. Encore merci pour ton aide Kevin.
vendredi 18 juillet 2008 à 18:20:01 | Re : Problème pour écrire un XmlNode

Kevin.Ory

Ouais et ça fonctionne? Ca m'étonne fortement, car au niveau XML, ceci :
<NoeudParent>
      <NoeudEnfant />
</NoeudParent>

et cela :
<NoeudParent>
      <NoeudEnfant>
      </NoeudEnfant>
</NoeudParent>
est exactement la même chose.
.NET choisit la 1ère solution pour alléger le poid du fichier XML (et la lisibilité), mais il gère les 2 solutions de la même manière (au niveau de la lecture / modification).
"Si je veux maintenant ajouter un NoeudEnfant 2 à NoeudEnfant, je n'arrive pas à obtenir le bon résultat, et le programme recommence à écrire les noeud l'un en dessous de l'autre."
<NoeudParent>
      <NoeudEnfant />
      <NoeudEnfant2 />
</NoeudParent>
Ce que j'en dis, c'est que dans ce cas tu ajoute ton NoeudEnfant2 à NoeudParent et non à NoeudEnfant.
Il faut avant tout récupérer le noeud enfant, de cette façon. Voici un exemple de code:

Un formulaire avec 2 boutons. Form_Load va créer un document XML avec le noeud parent et un noeud enfant
NoeudEnfant. Button1_Click va afficher le document XML dans la console, Button2_Click va ajouter un sous-enfant (NoeudEnfant2) à l'enfant NoeudEnfant

Private mStructuredDatasXmlDoc AsNew Xml.XmlDocument

PrivateSub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) HandlesMyBase.Load
' Créer le document XML mStructuredDatasXmlDoc.LoadXml("<?xml version=""1.0"" encoding=""utf-8""?><NoeudParent></NoeudParent>")
' Récupérer le noeud parentDim mParentNode As Xml.XmlElement = mStructuredDatasXmlDoc.DocumentElement
' Ajouter un noeud enfantDim mChildNode As Xml.XmlElement = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant")
mParentNode.AppendChild(mChildNode)
EndSub
PrivateSub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
' Ajouter un sous-noeud au noeud enfant
' Récupérer le noeud enfantDim mChildNode As Xml.XmlElement = mStructuredDatasXmlDoc.DocumentElement.ChildNodes(0)
' Ajouter un sous-noeud à l'élément enfantDim mSubChildNode As Xml.XmlElement = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant2")
mChildNode.AppendChild(mSubChildNode)
EndSub
PrivateSub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
' Afficher le document XML dans la console
mStructuredDatasXmlDoc.Save(Console.Out)
EndSub

Après quelques cliques sur Button2, ça donne ceci:

</NoeudParent><?xml version="1.0"
encoding="Windows-1252"?>
<NoeudParent>
  <NoeudEnfant>
    <NoeudEnfant2 />
    <NoeudEnfant2 />
    <NoeudEnfant2 />
    <NoeudEnfant2 />
  </NoeudEnfant>
</NoeudParent>


(demande moi pas d'ou vient ce
encoding="Windows-1252")
vendredi 18 juillet 2008 à 18:28:09 | Re : Problème pour écrire un XmlNode

Kevin.Ory

Mouais, pas fameux la mise en page du code, le revoici:

Private mStructuredDatasXmlDoc As New Xml.XmlDocument
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    ' Créer le document XML
    mStructuredDatasXmlDoc.LoadXml("<?xml version=""1.0"" encoding=""utf-8""?><NoeudParent></NoeudParent>")
    ' Récupérer le noeud parent
    Dim mParentNode As Xml.XmlElement = mStructuredDatasXmlDoc.DocumentElement
    ' Ajouter un noeud enfant
    Dim mChildNode As Xml.XmlElement = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant")
    mParentNode.AppendChild(mChildNode)
End Sub


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
   ' Ajouter un sous-noeud au noeud enfant
    ' Récupérer le noeud enfant
   
Dim mChildNode As Xml.XmlElement = mStructuredDatasXmlDoc.DocumentElement.ChildNodes(0)
    ' Ajouter un sous-noeud à l'élément enfant
    Dim mSubChildNode As Xml.XmlElement = mStructuredDatasXmlDoc.CreateElement("NoeudEnfant2")
    mChildNode.AppendChild(mSubChildNode)
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click   
    ' Afficher le document XML dans la console
    mStructuredDatasXmlDoc.Save(Console.Out)
End Sub



Cette discussion est classée dans : problème, code, ajouter, noeud, noeudenfant


Répondre à ce message

Sujets en rapport avec ce message

COMMENT AJOUTER UNE LIGNE DE CODE à UN EXE [ par adn733r ] salut,je voudrais savoir comment ajouter une ligne de cide à n'importe quel exe, à savoir lancer unprogramme lors du lancement de cet exe. + de convivialité? [ par jia2812 ] Bonjour,Dans ma base Access, voyez-vous les boutons de déplacement en bas de chaque formulaire [Access of course, ps VB!]?...1 - Je les supprime, en l selection listview [ par joflo ] 1er problèmeje voudrais sélectionner ds une listview toute une ligne(la mettre en surbrillance en VB6) mais je ne trouve pas le code pour cela2ème pro ajouter une TextBox depuis le code [ par Library ] Bonjour,J'ai deja une textbox dont le texte rentré est un nombre. Je voudrais que lorsqu'on change ce nombre, il s'affiche autant de textbox que le no Problème urgent pour RTF !! [ par Jo Ace ] J'ai besoin d'une réponse immédiate : je veux faire un éditeur de code source java et je veux grâce à un RTF text box colorer mon code source. MAIS CO problème avec Crystal Report sous VB .NET [ par yoda ] J'ai créé un fichier report dans mon projet et je veux utiliser un viewer pour visualiser mon état. Quand j'exècute mon programme sur mon poste de dév problème connection ADODC [ par EvilGost ] Voilà, j'ai un gros soucis tout bete.J'ai une feuille MDI et 2 autre Feuille normales.J'ai également un module ou se trouve ceci:Option ExplicitPubl problème de code d'accès inconnu à VBAproject sur excel [ par McTour ] j'ai récupéré un fichier excel sur lequel je dois modifier les macro. Je n'ai pas accès au code et l'auteur des macros a quitté la boite.Je souhaite p Problème VB vers Access [ par Steph77ch ] Salutation a tousadoLivraison.Recordset.AddNewFor vCount = 0 To 3 adoLivraison.Recordset(vCount + 1) = txtChamps(vCount).TextNext</ta Problème avec un TreeView [ par kephset ] Voilà mon problème, j'ajoute directement dans un treeview des données sorties de requêtes SQL.J'arrive à ajouter les noeuds parents sans problème, mai


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,546 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales