Problème d'ajout intempestif d'attributs xmlns vides par la classe XMLDocument.

Résolu
aid63 Messages postés 3 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 19 septembre 2007 - 18 sept. 2007 à 09:33
aid63 Messages postés 3 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 19 septembre 2007 - 19 sept. 2007 à 09:26
Bonjour à tous,

Je participe actuellement au développement d'un site Internet et j'ai un problème. Pour aider le référencement Google, on m'a demandé de créer un petit utilitaire pour créer le SiteMap du site.

Pour générer le document XML, j'utilise notamment la classe XMLDocument. Je vous expose grosso-modo le code et mon problème :

Private docXML as XmlDocument

'Création de l'objet
docXML = New XmlDocument()
'Ajout du tout premier noeud, qui contiendra tous les autres
docXML.AppendChild(docXML.CreateNode(XmlNodeType.Element, "urlset", "http://www.sitemaps.org/schemas/sitemap/0.9"))

A partir de là le document XML est prêt à se voir ajouter des noeuds fils. J'utilise pour celà une méthode dont le corps est celui-ci :

Public Sub AjouterLien(ByVal lien As String)
        Dim elemUrl As XmlElement = docXML.CreateElement("url")
        Dim elemLoc As XmlElement = docXML.CreateElement("loc")
        elemLoc.InnerText = lien
        elemUrl.AppendChild(elemLoc)
        docXML.DocumentElement.AppendChild(elemUrl)
End Sub

Une fois que tous les liens ont été ajoutés, j'utilise un objet XmlWriter pour sauvegarder mon document dans un fichier... et là c'est le drame . Le fichier généré est celui-ci :

<?xmlversion="1.0"encoding="utf-8"?>

   
        <loc>http://www.lesite.com/machin/bidule1/</loc>
   
   
        <loc>http://www.lesite.com/machin/bidule2/</loc>
   

etc.

Vous remarquerez les attributs xmlns="" qui apparaissent dans les balises .

Sauriez-vous comment faire pour faire en sorte qu'ils ne soit pas ajouter automatiquement, tout en laissant la balise ? J'ai retourné le problème dans tous les sens hier et je n'ai pas trouvé comment faire. Le sujet n'est pas très (pas du tout ?? ) documenté sur Internet.

Par avance, merci à tous !

2 réponses

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
19 sept. 2007 à 03:13
Bonsoir,

étonnant ! il doit y avoir une explication simple au problème mais dans ton cas je te conseil de passer par un XmlWriter, niveau perf ca n'a rien à voir (surtout si ca t'as plusieurs milliers d'url ...) car le XmlWriter travail sur un stream alors que le XMLDocument sur le DOM chargé en mémoire ...
Je pense qu'en utilisant un XmlWriter tu n'auras plus ce problème.

<hr />Cyril - MSP - MCPD ASP.net & MCTS SQL
3
aid63 Messages postés 3 Date d'inscription lundi 23 juillet 2007 Statut Membre Dernière intervention 19 septembre 2007
19 sept. 2007 à 09:26
En effet, passer directement par un objet XmlWriter permet de contourner le problème.

Merci !
0
Rejoignez-nous