2009-07-07 3 views
1

Пример XMLRead XMLDocument узел не читая его дочерних узлов в C#

<A> 
    <B> 
     <B1/> 

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

Запрос: C# Когда я читаю дочерние узлы А это Retuns узлы В & C с их дочерними узлами ,

Есть ли возможность, так что я могу получить только В & C без их соответствующих дочерних узлов

мне нужно заполнить дерево с этим типом XML & файл XML является довольно большой. так что мне нужно, чтобы загрузить Чайлдс в момент расширения любого узла

Требование является Предположим, что я пытаюсь развернуть узел Я хочу только B & C,

Если я расширяю B, то я хочу B1 до B5

+0

Что вы используете для разбора и запроса документа? Вы должны быть более конкретными. Это также поможет опубликовать соответствующую часть XML, который вы пытаетесь запросить. –

+0

Образец XML является 2009-07-07 11:55:13

ответ

1

Если вы используете java, вы можете реализовать SAX Handler, строя свою DOM и игнорируя детей.

+0

-1: Если бы у меня был пони ... –

+0

FYI он много изменил вопрос.Это был правильный ответ для первой версии вопроса. ;-) – Shoban

+0

Итак, я вижу ... вы можете вернуть свою точку :) –

1

Это плохо сформулированный вопрос, так что я не совсем уверен, что вы пытаетесь сделать, но если вы просто хотите, чтобы все дочерние узлы корня (А), а затем использовать XmlDocument с XPath, как это:

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

Извините, что все еще загружает весь XML-документ в память. См. Ответ от foreachdev. –

+0

Да, я почти упомянул XmlReader, но вопрос не был сформулирован очень хорошо, поэтому было довольно сложно понять, чего они хотят. –

5

Используйте XmlReader. XmlDocument по дизайну должен загрузить весь XML-документ в память.

+1

+1 для правильного ответа –

+0

Пример пожалуйста? – JohnB

0

Если я понимаю вопрос правильно, вам нужно получить детей узла, не получая своих детей. это можно сделать с помощью xquery (child :: *)

поэтому, если u применить его в узле A, он даст B и C., если u примените его в B, тогда он даст B1-B5.

Смежные вопросы