2009-02-25 6 views
1

Je en train de modifier mon XML en utilisant LINQ:XML, LINQ analyse syntaxique

Dim feedXML As XDocument = XDocument.Parse(m_xmld.OuterXml.ToString()) 
Dim SortedFields = From field In feedXML.Descendants("fields") 
Dim sFieldList = From field In SortedFields.Descendants("field") Order By 
       Integer.Parse([email protected]) 

Je suis en train de trier mes "champs" dans l'ordre croissant. Maintenant, mon problème est que je veux les champs triés pour remplacer ma liste de champs non triés dans le XML afin que je puisse utiliser le XML trié plus loin.

Comment puis-je récupérer le XML après le tri?

Répondre

2

Il n'y a pas de véritable concept de "XML après le tri". Si vous avez que a obtenu des éléments sur le terrain, il est relativement facile - mais si vous avez:

<field position="2" /> 
<non-field /> 
<field position="1" /> 
<non-field /> 
<field position="0" /> 

alors ce que le résultat devrait être par la suite?

+0

Non, au fond ce que je veux savoir est après que je suis fait avec la modification de la nxml (ie le tri des champs dans le nœud « champs ») je veux à xml modifié pour faire d'autres opérations, comment puis-je obtenir le xml modifié? – Mithil

+0

Il n'y a * * aucun XML modifié. Vous n'avez pas trié le XML lui-même - vous avez trié une liste récupérée à partir du XML. C'est mon point. Vous n'avez pas du tout changé le XML lui-même. Compte tenu de l'exemple dans ma réponse, que voulez-vous que le résultat soit? –

+0

Désolé si j'ai encadré la question dans un mauvais sens, oui, je suis trier la liste récupérée à partir du xml. Maintenant, je veux que cette liste remplace la liste non triée dans mon xml d'origine afin que je puisse l'utiliser. Merci – Mithil

0

J'utilisé ReplaceNodes pour cela à la fin:

x.ReplaceNodes(
    from el in x.Elements() 
    orderby (int)el.Element("Index") 
    select el        
);