J'ai un problème. J'ai des données XML hiérarchiques tels que:XElement.Descendants ("Node") ne se comporte pas comme prévu, renvoie plusieurs niveaux de descendants
<Tree>
<Node Text="Stuff" ItemGUID="064a9bf0-0594-47f8-87be-88dd73763c77" >
<Node Text="Food" ItemGUID="326f1f7a-d364-4838-9bdc-ce5fd93f88ca" ItemType="2" />
<Node Text="Wines" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
<Node Text="Flowers" ItemGUID="cefa8c34-af06-48e7-9c00-4b1422d217a4">
<Node Text="Roses" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f">
<Node Text="Red" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
<Node Text="Pink" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
<Node Text="White" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
</Node>
<Node Text="Tulips" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
<Node Text="Whatever" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
</Node>
<Node Text="Sweet Delights" ItemGUID="1df7dbae-adf0-49a9-aaac-1358468a245b" />
</Node>
</Tree>
Et je dois obtenir simplement des fleurs (roses, tulipes, peu importe) sans rouge, rose, blanc (sous Roses) J'utilise le code suivant, mais en raison Au fait que tous les nœuds sont "Node", je reçois tous les niveaux de Descendats. Je voudrais limiter à un seul niveau.
XElement loadedXML = clients.ItemTreeXML;
//filter only current node
XElement procXML;
procXML = new XElement ("Tree",
from el in loadedXML.Descendants("Node")
where (string)el.Attribute("ItemGUID") == currentNodeGUID
select el);
Résultat Recherché:
<Tree>
<Node Text="Flowers" ItemGUID="cefa8c34-af06-48e7-9c00-4b1422d217a4">
<Node Text="Roses" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
<Node Text="Tulips" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
<Node Text="Whatever" ItemGUID="950e3ca3-27a1-41fd-89f3-7a8b08633a9f" />
</Node>
</Tree>
Merci,
Ajouté: Peut-être une requête SQL 2008 pourrait retreive que la branche de nœud que j'ai besoin, mais après beaucoup de recherches et d'essais, je ne pouvais pas trouver une réponse ... (Mon XML est dans une colonne XML dans SQL 2008)
Merci de votre contribution. Je faisais la même chose. Je me demande simplement s'il y a un moyen plus rapide. Optionnellement, une requête XML SQL 2008 serait géniale mais je ne trouve aucun moyen d'obtenir uniquement le jeu de nœuds dont j'ai besoin. Je voudrais éviter de charger dans XML énorme ram quand en réalité j'ai juste besoin de l'une des nombreuses branches, et seulement un niveau de cette branche. – mfr