2010-02-07 7 views
2

Я знаю, как писать в xml-файлы, но у меня проблемы с выполнением того, что мне нужно сделать, и не могу найти адекватную информацию по этому типу проблем.Загрузка элементов управления из файла xml

Вот один XML-файл ниже:

<?xml version="1.0" encoding="utf-8"?> 
<controls> 
    <Label Content="Double-click to edit." Location="258, 178" Size="101, 13" ForeColor="-1" /> 
    <LinkLabel Content="Double-click to edit." Location="532, 133" Size="101, 13" LinkColor="-1" /> 
    <LinkLabel Content="Double-click to edit." Location="424, 212" Size="101, 13" LinkColor="-1" /> 
    <Label Content="Double-click to edit." Location="282, 89" Size="101, 13" ForeColor="-1" /> 
    <Label Content="Double-click to edit." Location="528, 178" Size="101, 13" ForeColor="-1" /> 
    <LinkLabel Content="Double-click to edit." Location="528, 133" Size="101, 13" LinkColor="-1" /> 
    <LinkLabel Content="Double-click to edit." Location="528, 149" Size="101, 13" LinkColor="-1" /> 
    <Label Content="Double-click to edit." Location="528, 164" Size="101, 13" ForeColor="-1" /> 
</controls> 

И что мне нужно сделать, как только я открыл этот файл в моем приложении является:

foreach(control in XmlFile) 
{ 

    get Content 
    get Location 
    get Size 
    get ForeColor/LinkColor 
    // do something... 
} 

Может кто-то пожалуйста, помогите мне с этим ? Я был бы признателен за любую помощь.

Спасибо

Бейл

+0

Боюсь, я не совсем понимаю вопрос. Вам нужна помощь в чтении XML из файла (т. Е. Вы знаете, как его записать, но не как его прочитать), или вам нужна помощь при фактической обработке извлеченных XML-данных? Если последнее, чего вы пытаетесь достичь? – stakx

+0

Я пытаюсь прочитать XML-файл, а затем получить каждый «элемент управления» в файле xml и воссоздать элемент управления и поместить его в элемент управления Panel в форме со свойствами, связанными с этим элементом управления, в файле xml –

ответ

1

Если вы пытаетесь итерацию по всем элементам управления в XML и извлечь информацию, вы должны использовать XPath.

Вот пример:

XPathDocument Doc = new XPathDocument("yourfile.xml"); 
XPathNavigator navigator = Doc.CreateNavigator(); 
XPathNodeIterator iterator = navigator.Select("/controls/*"); 
while (iterator.MoveNext()) 
{ 
    System.Diagnostics.Debug.Print(iterator.Current.Content); 
    System.Diagnostics.Debug.Print(iterator.Current.Location); 
} 
2

Использование LINQ: (Для ForeColor проверки/LinkColor для Null)

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

      var q = from c in loaded.Descendants().Descendants() 
          select new 
          { 
           content = c.Attribute("Content"), 
           location = c.Attribute("Location"), 
           size = c.Attribute("Size"), 
           foreColor = c.Attribute("ForeColor"), 
           linkColor = c.Attribute("LinkColor") 
          }; 

      foreach (var controlItem in q) 
       Console.WriteLine("Control content = {0}", controlItem.content); 
+0

+ 1, хороший, не был уверен, как это сделать в linq – Amirshk

+0

спасибо за это, это очень красиво написано. Как мне получить имя элемента управления? например Ярлык или LinkLabel? –

+0

просто добавьте "name = c.Name" – Igor

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