XDocument vs XmlDocument

Signaler
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008
-
Bonjour,

J'utilise de plus en plus les XDocument à la place des XmlDocument.

Le problème est qu'il y a certaines manipulations possibles avec un XmlDocument qui ne le sont plus avec un XDocument (ou bien je ne sais pas comment faire). Par exemple, je ne vois pas de propriété innerXml pour un XElement. Je ne vois pas non plus comment obtenir un élément XText qui serait le contenu text d'un XElement. La seule technique j'ai trouvé pour le moment est charger un XmlDocument à partir de mon instance de Xdocument quand j'ai besoin des fonctionnalités de XmlDocument puis de repasser à un XDocument quand j'ai fini ces manipulations. Mais ça m'embête pas mal de devoir passer d'un XDocument à un XmlDocument et
inversement juste parce que certaines fonctionnalités sont disponibles
dans l'un mais pas dans l'autre... Et la performance en prend un coup !

L'idéal serait des méthodes d'extensions pour les XElement qui permettent de faire tous ce qu'on peux faire  avec les XmlElement. Quelqu'un en connais ?

Merci d'avance,
Mathmax
A voir également:

4 réponses

Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
3
il suffit de faire un ToString() pour obtenir le xml
myXDocument.ToString()

exemple :
OpenFileDialog

openFileDialog =
new
OpenFileDialog();

if (openFileDialog.ShowDialog() ==
DialogResult.OK)
{

XDocument xDocument =
XDocument.Load(openFileDialog.FileName);

MessageBox.Show(xDocument.ToString());
}

euu si il me semble que tout ce que l'on peut faire avec un xmldocument on peut le faire avec un XDocument
et même peut etre plus facilement 
on peut aussi filtrer et trier de maniere complexe facilement et faire des "mélanges" (avec requetes Linq)
et la bibliotheque System.Linq.Xml me semble quand même mieux fichue

maintenant c'est vrai aussi que je ne vois pas forcement une raison qui fait qu'il faut absolument utiliser le XDocument plutot que le xmldocument 

tu peux regarder les ressources aussi ici
http://msdn2.microsoft.com/fr-fr/netframework/aa904594.aspx

+

Se poser les bonnes questions ;) 
apporter les réponses
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

myXDocument.ToString() équivaut à la propriété OuterXml d'un XmlDocument. J'ai besoin d'acceder en lecture et écriture à l'équivalent de InnerXml.
Autre exemple de chôses qu'on l'on ne peut à ma connaissance pas faire un XDocument :
Les méthodes d'extensions : XPathSelectElement et XPathSelectElements  du namespace System.Xml.XPath ne permette d'obtenir que des XElements alors que les méthode SelectSingleNode et SelectNodes permettent d'obtenir n'importe quel élément xml à partir d'une expression xpath. Par conséquent; un telle ligne plante à l'exécution :
XNode node = myXElement.SelectSingleNode("./text()");

Mathmax
Messages postés
687
Date d'inscription
lundi 10 janvier 2005
Statut
Membre
Dernière intervention
27 août 2014
3
a oui
ba je pense que tu dois connaitre la methode static parse :

XDocument xDocument =
XDocument.Parse(
@"<?xml version=""1.0"" encoding=""utf-8""?><Contacts>
<Contact>
<FirstName>Jean</FirstName>
<LastName>Dupond</LastName>
<Gender>H</Gender>
</Contact>
</Contacts>");

valable aussi pour xelement
tu peux regarder aussi au niveau de CreateWriter()

Se poser les bonnes questions ;) 
apporter les réponses
Messages postés
403
Date d'inscription
vendredi 28 octobre 2005
Statut
Membre
Dernière intervention
31 août 2008

Oui c'est vrai. Je la connaissais mais je n'ai pas pensé à elle.

Par contre pour les méthodes XPathSelectElement et XPathSelectElements ?

Mathmax