Загрузка элементов управления из XML-файла - PullRequest
2 голосов
/ 07 февраля 2010

Я знаю, как записывать в 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...
}

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

Спасибо

Bael

Ответы [ 2 ]

2 голосов
/ 07 февраля 2010

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

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);
1 голос
/ 07 февраля 2010

Если вы пытаетесь перебрать все свои элементы управления в 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);
}
...