2009-07-07 9 views
1

Exemple XMLLire noeud XMLDocument sans lire ses nœuds enfants en C#

<A> 
    <B> 
     <B1/> 

     <B2/> 
     <B3/> 
     <B4/> 
     <B5/> 
    </B> 
    <C> 
     <C1/> 
     <C2/> 
     <C3/> 
     <C4/> 
     <C5/> 
    </C> 
</A> 

Requête: C# Quand je lis les nœuds enfants de A ce nœuds retour précis ou chiffré B & C avec leurs nœuds enfants .

Est-il possible que je puisse obtenir que B & C sans leur enfant respectif noeuds

je dois remplir l'arbre avec ce type de xml & le fichier xml est assez grand. donc je dois charger les Childs au moment de l'expansion un nœud

Exigence est Supposons que je tente de développer un nœud le Je veux seulement B & C,

Si j'élargissons B je veux B1 à B5

+0

Qu'est-ce que vous utilisez pour analyser et interroger le document? Tu dois être plus précis. Il serait également utile d'afficher la partie pertinente du fichier XML que vous essayez d'interroger. –

+0

XML de l'échantillon est

Répondre

1

si vous utilisez java, vous pouvez mettre en œuvre un SAX Handler construire votre DOM et en ignorant les enfants.

+0

-1: Si j'avais un poney ... –

+0

Pour info, il a beaucoup changé la question.C'était la réponse correcte pour la première version de la question. ;-) – Shoban

+0

Donc je vois ... vous pouvez avoir votre point de retour :) –

1

Il est une question formulée mal donc je ne suis pas tout à fait sûr de ce que vous essayez de faire, mais si vous voulez juste tous les nœuds enfants de la racine (A) puis utilisez un XmlDocument avec XPath comme ceci:

XmlDocument doc = new XmlDocument(); 
doc.Load(xmlFile); 
XmlNodeList nodes = doc.SelectNodes("/A/*"); 
foreach(XmlNode node in nodes){ 
    //DO STUFF 
} 
+0

Désolé, cela charge encore l'ensemble du document XML en mémoire. Voir la réponse de foreachdev. –

+0

Oui, j'ai presque mentionné XmlReader mais la question n'était pas très bien formulée, donc c'était plutôt difficile de savoir ce qu'ils voulaient. –

5

Utilisez un XmlReader. XmlDocument par conception doit charger le document Xml entier en mémoire.

+1

+1 pour la bonne réponse –

+0

Exemple s'il vous plaît? – JohnB

0

si je comprends le droit de question, u besoin d'amener les enfants du nœud sans avoir leurs enfants. cela peut être fait par xquery (child :: *)

donc si vous l'appliquez dans un nœud, il donnera B et C. si vous l'appliquez dans B alors il donnera B1-B5.