2010-08-11 2 views
1

мой XML ниже:Как Загрузка XML файлов из файла

<Demo> 
    <ClientCompanyId CompanyId="1"> 
     <MyMenu> 
      <module MenuType="0" ModID="Mod1" ModuleID="1" Perm="False" Text="Basic Settings"> 
       <menu MID="1-1" MenuDescription="Mod" MenuType="0" ModuleID="1" ParentID="Mod1" Perm="False" Text="Forms"> 
        <Leaf LeafNode="true" MID="1-3" MenuDescription="" MenuType="0" ModuleID="1" ModuleMenuID="1-3" ParentID="1" Perm="False" TargetUrl="" Text="LookUp"/> 
        <submenu MID="1-4" MenuDescription="" MenuType="0" ModuleID="1" ParentID="1" Perm="False" Text="Bank Branch"> 
         <Leaf LeafNode="true" MID="1-5" MenuDescription="" MenuType="0" ModuleID="1" ModuleMenuID="1-5" ParentID="4" Perm="False" TargetUrl="" Text="BO Category"/> 
        </submenu> 
       </menu> 
       <menu MID="1-2" MenuDescription="Mod" MenuType="0" ModuleID="1" ParentID="Mod1" Perm="False" Text="Reports"> 
        <Leaf LeafNode="true" MID="1-6" MenuDescription="" MenuType="0" ModuleID="1" ModuleMenuID="1-6" ParentID="2" Perm="False" TargetUrl="" Text="Cheque Type"/> 
        <Leaf LeafNode="true" MID="1-7" MenuDescription="" MenuType="0" ModuleID="1" ModuleMenuID="1-7" ParentID="2" Perm="False" TargetUrl="" Text="Stock Exchange"/> 
       </menu> 
      </module> 
     </MyMenu> 
    </ClientCompanyId> 
</Demo> 

мой синтаксис LINQ ниже:

XDocument loaded = XDocument.Load(@"C:\Menu_Settings.xml"); 
var q = from c in loaded.Descendants("module") 
where (int)c.Attribute("ModuleID") < 0 
select (string)c.Attribute("Text"); 

Из указанного выше файла XML я хочу, чтобы получить значения атрибутов тега.

Text="Basic Settings" ModID="Mod1" ModuleID="1" MenuType="0" Perm="False" 

Из приведенного выше XML я хочу, чтобы получить все тег значения атрибутов.

Как получить стоимость от xml файл?

ответ

0

Или вы можете на последнем этапе отбрасываемой к XElement и использование любой XElement может предложить:

вместо вар Q:

IEnumerable<XElement> q =from c in loaded.Descendants("module") 
        where (int)c.Attribute("ModuleID").Value < 0 
        select c; 

foreach(XElement e in q){ 
    string t = e.Attribute("Text").Value; 
    // etc... 
} 

, если вы знаете, одна запись будет возвращать

XElement q = (from c in loaded.Descendants("module") 
        where (int)c.Attribute("ModuleID").Value < 0 
        select c).First(); // one of many options to return a single record 

sring t = q.Attribute("Text").Value; 
// etc... 

UPDATE

сделать дальнейшие запросы на ваш результат:

IEnumarble<XElement> menus = q.Elements("menu"); 

затем цикл Еогеасп, вы можете использовать, чтобы получить menuselement.Element("tag_name").Value строковые значения узлов или menuselement.Attribute("attr_name").Value для получения значений атрибутов, и вы можете дополнительный запрос с menuslement.Find или menuselement.Where или menuselement.Select и варианты действительно безграничны ... здесь, где вы можете узнать более: http://msdn.microsoft.com/en-us/library/bb387065.aspx

а вот MSDN, как запросить XML с помощью LINQ: http://msdn.microsoft.com/en-us/library/bb943906.aspx

+0

im не 100% уверен в (int), если он работает для вас отлично, но он никогда не работает для меня, мне обычно нужно идти с Convert.toInt16 (val) – Ayyash

+0

Как выбрать все значения тегов меню.Меню содержат листок, тэг подменю. Необходимо выбрать все значения тега меню и заполнить AspxMenu этим значением. – shamim

2

Ну это выглядит, как вы почти там:

XDocument loaded = XDocument.Load(@"C:\Menu_Settings.xml"); 

var q = from c in loaded.Descendants("module") 
     where (int)c.Attribute("ModuleID") < 0 
     select new 
     { 
      Text = (string) c.Attribute("Text"), 
      ModID = (string) c.Attribute("ModID"), 
      ModuleID = (int) c.Attribute("ModuleID"), 
      MenuType = (int) c.Attribute("MenuType"), 
      Perm = (bool) c.Attribute("Perm") 
     }; 

Если это не поможет вам, пожалуйста, дайте больше деталей.

+0

Привет Джон, ты м Исходные запятые в конце некоторых строк здесь, я думаю? – AndrewC

+0

@ AndyC: Да, исправят. –

+0

спасибо за помощь .... – shamim