Xml CraeteElement ? [Résolu]

lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 29 janv. 2007 à 14:43 - Dernière réponse : lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention
- 31 janv. 2007 à 18:01
Bonjour à tous,


je souhaiterais créer un document xml avec la syntaxe suivante:
<monPrefix:monNoeud></monPrefix:monNoeud>


J'utilise le code suivant :
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :

monDocumentXML.CreateElement("monPrefix:monNoeud")

<!-- END TEMPLATE: bbcode_code -->mais j'obtiens le résultat suivant !!! :

<monNoeud></monNoeud> quand j'utilise le innerXML


Pourquoi je ne vois monPrefix ?


Comment faire pour avoir la sortie que je veux ?


Merci car je suis dérouté ....
Afficher la suite 

14 réponses

Répondre au sujet
dgouttegattat 129 Messages postés mardi 22 novembre 2005Date d'inscription 30 décembre 2007 Dernière intervention - 30 janv. 2007 à 16:32
+3
Utile
Voilà ce que j'ai fait (à l'arrache) et qui devrait t'aider :


<hr />

XmlDocument doc =


new

XmlDocument();


XmlElement root = doc.CreateElement(


"racine:premier"
,

"tutu"


); // Ici, l'espace de nom "tutu"
// est automatiquement associé au préfixe "racine"


doc.AppendChild(root);

// Et là, on associe explicitement le préfixe "autre" à l'espace de nom "toto"

XmlAttribute attr = doc.CreateAttribute(

"xmlns:autre"

);


attr.Value =

"toto"

;


root.Attributes.Append(attr);




// Élément sans espace de nom

XmlElement salut = doc.CreateElement(

"salut"

);


root.AppendChild(salut);

// Un élément avec l'espace de nom "tutu"

XmlElement bonjour = doc.CreateElement(


"racine:bonjour"
,

"tutu"


);


bonjour.AppendChild(doc.CreateTextNode(

"bonjour"

));


salut.AppendChild(bonjour);




// Un élément avec l'espace de nom "toto"

XmlElement revoir = doc.CreateElement(


"autre:revoir"
,

"toto"


);


revoir.AppendChild(doc.CreateTextNode(

"revoir"

));


salut.AppendChild(revoir);

<hr />Le document XML généré est le suivant :
<hr /><racine:premier xmlns:autre="toto" xmlns:racine="tutu">
  <salut>
    <racine:bonjour>bonjour</racine:bonjour>
    revoir
  </salut>
</racine:premier>
<hr />
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de dgouttegattat
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 29 janv. 2007 à 15:45
0
Utile
Salut,
Regarde dans les surcharges de la méthode CreateElement...
Tu dois pouvoir faire quelque chose comme ceci:

XmlElement elem = doc.CreateElement(
"prefix",
"lName",
"ns");

<hr />
-Blog-
Commenter la réponse de cs_Bidou
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 29 janv. 2007 à 16:21
0
Utile
justement la surcharge qui demande un prefix fait la même erreur ..... c'est pourquoi je comprends pas
Commenter la réponse de lenoil55
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 29 janv. 2007 à 16:54
0
Utile
Ce que tu veux ce n'est pas un prefix c'est plutôt un namespace (3ème paramètre)!
Non?

<hr />
-Blog-
Commenter la réponse de cs_Bidou
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 29 janv. 2007 à 17:38
0
Utile
avec ta syntaxe


XmlElement
elem = doc.CreateElement(

"prefix"
,

"lName"
,

"ns"
);








j'obtiens



<
prefix:lName
xmlns:prefix
="

ns

"


/>



et moi je veux




 

/>
Commenter la réponse de lenoil55
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 29 janv. 2007 à 18:10
0
Utile
Hum, jettes voire un tit coup d'oeil ici

<hr />
-Blog-
Commenter la réponse de cs_Bidou
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 30 janv. 2007 à 08:57
0
Utile
j'ai regardé

XmlNode





xmlNodeIdentification1 = m_xmlDoc.CreateElement(
"tutu"

,

"zefzfzfzfzefzfzfzf"

,

null





);
me sort <zefzfzfzfzefzfzfzf>dd</zefzfzfzfzefzfzfzf>

XmlNode xmlNodeIdentification1 = m_xmlDoc.CreateElement("tutu"
,
"zefzfzfzfzefzfzfzf"
,
string.empty




);
me sort <zefzfzfzfzefzfzfzf>dd</zefzfzfzfzefzfzfzf>

il n'y a pas de solution alors ?
c'est franchement merdique !!!!

je peux pas avoir <tutu:zefzfzfzfzefzfzfzf>dd</zefzfzfzfzefzfzfzf>




comment faire ?au secours ...
Commenter la réponse de lenoil55
dgouttegattat 129 Messages postés mardi 22 novembre 2005Date d'inscription 30 décembre 2007 Dernière intervention - 30 janv. 2007 à 10:32
0
Utile
Salut,

Le problème, c'est que ce que tu cherches à obtenir n'est pas valide. Dans l'extrait XML suivant,
<hr />  /><hr />
le préfixe n'est associé à aucun espace de noms, ce qui n'est pas conforme aux recommendations du W3C. C'est pourquoi la surchage de XmlCreate à trois arguments (le préfixe, le nom local et l'URI d'espace de noms) génère automatiquement l'attribute xmlns :
<hr /><hr />
Il s'agit là d'un comportement normal et attendu.

En revanche, si tu ajoutes des éléments enfants, l'attribut xmlns ne sera pas répété si les enfants ont le même espace de noms.
Commenter la réponse de dgouttegattat
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 30 janv. 2007 à 11:46
0
Utile
alors comment fais tu pour générer un truc de ce genre là ? :

<racine:premier xmlns:racine="tutu" xmlns:autre="toto">
    <salut>
                <tutu:bonjour>bonjour</tutu:bonjour>
                <toto:revoir>revoir</toto:revoir>
    </salut>
</racine>

merci pour ta réponse

 
Commenter la réponse de lenoil55
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 30 janv. 2007 à 11:49
0
Utile
Excuses je me suis trompé

<racine:premier xmlns:racine="tutu" xmlns:autre="toto">
    <salut>
                <racine:bonjour>bonjour</racine:bonjour>
                revoir
    </salut>
</racine>

merci pour ta réponse
Commenter la réponse de lenoil55
dgouttegattat 129 Messages postés mardi 22 novembre 2005Date d'inscription 30 décembre 2007 Dernière intervention - 30 janv. 2007 à 12:15
0
Utile
Normalement, les classes du framework n'insèrent l'attribut xmlns:... que là où c'est nécessaire, donc dans ton cas, la déclaration de l'espace de noms "toto" ne serait inséré qu'au niveau de l'élément "revoir", puisque cet espace de noms n'est pas utilisé avant.

Si tu veux forcer la déclaration de l'espace de nom à apparaître avant son utilisation, à ma connaissance il faut le faire "à la main" :


<hr />
XmlAttribute xmlns = doc.CreateAttribute("xmlns:autre");
xmlns.Value = "toto";
doc.DocumentElement.Attributes.Append(xmlns);
<hr />Dans ce cas, lorsque tu ajouteras un élément XML avec ce préfixe et cet espace de noms, la déclaration d'espace de noms ne sera pas répétée (la classe sera "consciente", si on veut, que cet espace de noms a déjà été déclaré).
Commenter la réponse de dgouttegattat
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 30 janv. 2007 à 16:16
0
Utile
C'est ce que j'avais fait ..... en tout début de  mon document XML

et c'est après que j'avais vu ce que faisais l'api .net


mais dans ton exemple tu vas arriver à écrire la ligne <racine:premier xmlns:racine="tutu" xmlns:autre="toto">
mais ensuite pour écrire la ligne  <toto:revoir>revoir</toto:revoir> impossible et c'est là mon problème !

je suis d'accord qu'elle sera consciente où il faudra aller le chercher mais si tu as deux noms identiques dans deux namespaces différents comment fera t-il ?
exemple:
                <tutu:bonjour>bonjour</tutu:bonjour>

                <toto:bonjour>revoir</toto:bonjour>

de plus, je dois générer un  xml avec le type suivant de balise donc je suis embêter :
:<racine:premier xmlns:racine="tutu" xmlns:autre="toto">
    <salut>
                <tutu:bonjour>bonjour</tutu:bonjour>
                <toto:revoir>revoir</toto:revoir>
    </salut>
</racine>

merci pour ton aide
Commenter la réponse de lenoil55
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 30 janv. 2007 à 17:11
0
Utile
Merci beaucoup pour ton aide

je vais regarder tout ceci et je te dis ....
Commenter la réponse de lenoil55
lenoil55 57 Messages postés mercredi 13 juillet 2005Date d'inscription 20 avril 2011 Dernière intervention - 31 janv. 2007 à 18:01
0
Utile
ton petit bout de code m'a aidé
Cela focntionnne maintenant .....

Merci beaucoup

A ++
Commenter la réponse de lenoil55

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.