J'utilise les technologies .NET XML de manière assez extensive dans mon travail. L'une des choses que j'aime le plus, c'est le moteur XSLT, plus précisément l'extensibilité de celui-ci. Cependant il y a un petit morceau qui continue d'être une source de contrariété. Rien de majeur ou de quelque chose qu'on ne peut pas vivre mais qui nous empêche de produire le magnifique XML que nous aimerions produire. L'une des choses que nous faisons est de transformer les nœuds en ligne et d'importer des nœuds d'un document XML à un autre. Malheureusement, lorsque vous enregistrez des noeuds dans un XmlTextWriter
(en fait, quel que soit XmlWriter.Create(Stream)
renvoie), les définitions d'espace de noms y sont toutes renvoyées, qu'elles soient nécessaires (définies précédemment) ou non. Vous obtenez le genre de code XML suivant:Gestion correcte de l'espace de noms dans .NET XmlWriter
<root xmlns:abx="http://bladibla">
<abx:child id="A">
<grandchild id="B">
<abx:grandgrandchild xmlns:abx="http://bladibla" />
</grandchild>
</abx:child>
</root>
Quelqu'un at-il une suggestion quant à la façon de convaincre .NET d'être efficace au sujet de ses définitions d'espace de noms?
Merci, Boaz
PS. En bonus, je voudrais remplacer l'espace de noms par défaut, en le modifiant au fur et à mesure que j'écris un nœud.
'' XmlTextReader' et XmlTextWriter' sont essentiellement amorties, et ne peuvent être utilisés directement si vous travaillez avec les méthodes recommandées 'create'. En tout cas, c'était ici quand j'ai ajouté la prime, alors j'espère que ce n'est pas éligible. Il ne répond pas à la question, qui est parfaitement libellée en tant que telle, * à savoir *, "comment convaincre .NET d'être efficace sur ses définitions d'espace de nommage." J'admets que cela n'est possible que grâce à un lecteur ou un rédacteur personnalisé, mais c'est un hack s'il y a une solution native. – harpo