Supposons que j'ai une classe qui ressemble à celle ci-dessous, Comment créer XML comme ci-dessous en utilisant LINQ vers XML?
<orders>
<orderid>
<orderno>1</orderno>
<itemid>W001</itemid>
<itemdesc>C# T-Shirst</itemdesc>
<quantity>2</quantity>
</orderid>
<orderid>
<orderno>2</orderno>
<itemid>W002</itemid>
<itemdesc>XML T-Shirt</itemdesc>
<quantity>1</quantity>
</orderid>
</orders>
3 Réponses :
Vous devez respecter la hiérarchie.
sérialiser ce XML, nous aurons quelque chose comme ceci: p>
<Order> <OrderNo></OrderNo> <ItemId></ItemId> ... <Order>
Merci riba, je pense que xmldocument est la voie à suivre
Vous n'avez pas besoin de LINQ pour générer ce XML, vous pouvez utiliser LINQ pour générer une collection code> SERIALISEZ la collection dans un fichier XML.
Avant de sérialiser, vous devez ajouter l'attribut regarder ici comment personnaliser votre sérialisation (à l'aide des attributs ):
http://msdn.microsoft.com/fr- US / Bibliothèque / 58A18DWA (v = vs.80) .aspx P> Créez une méthode comme celle-ci pour sérialiser: p> et désériorize : p> et utilisez-le: p> Serializable code> dans votre classe: p>
Merci de votre réponse, dans mes exigences réelles, il doit ajouter de nombreux attributs statiques en tant que types de données, espace de noms. Puis-je atteindre cela en utilisant LINQ vers XML?
Je pense que oui, Linq to XML est juste pour lire XML à l'aide de relevés LINQ. Pour l'enregistrer, vous pouvez utiliser la sérialisation (dans mon option, facilement à faire) ou XMLDOCUMUMUMUMUMENT et XMLWriter (bien mais convaincant).
Vous pouvez utiliser LINQ vers XML pour créer et enregistrer XML et avoir beaucoup plus simple de code que la totalité des trucs de sérialisation XML.
Bien que vous puissiez utiliser XMLSerialization, il existe un certain nombre de cas où l'utilisation de LINQ vers XML est tout aussi facile et ne verrouille pas votre implémentation de classe dans un seul schéma de sérialisation. Voici un peu de code pour gérer votre demande.
var xOrders = new XElement("orders",
from o in Orders
select new XElement("orderid",
new XElement("orderno", order.OrderNo),
new XElement("itemid", order.ItemId),
new XElement("itemdesc", order.ItemDesc),
new XElement("quantity", order.Qty)));
xOrders.Save(targetPath);
Cela répond réellement à la question qui a été posée.
Au lieu de Linq à XML ... L'ajustement plus approprié serait un sérialiseur XML ... et assez trivial à faire.
@Vivek je suis tout à fait en désaccord.