2014-02-16 4 views
0

я получил что-то вроде этого:XML Множественные атрибуты

<item name="Whatever"> 
    <Point x="12312" y="24234" /> 
    <Point x="242342" y="2142" /> 
</item> 

Мне нужно разобрать этот элемент в массиве, если массив содержит имя и список точек.

Я раньше не использовал xml.

это мой код до сих пор за

XmlReader reader = XmlReader.Create("Gestures.xml"); 
while (reader.Read()) 
{ 
    KnownGestures temp = new KnownGestures(); 
    IList<Point> GesturePath = new List<Point>(); 
    // Only detect start elements. 
    if (reader.IsStartElement()) 
    { 
     // Get element name and switch on it. 
     switch (reader.Name) 
     { 
      case "Gesture": 
       // Detect this element. 
       temp.GestureName = reader["Name"]; 
       break; 
      case "Point": 
       var XValue = reader["X"]; 
       var YValue = reader["Y"]; 
       Point tempPoint = new Point {X = double.Parse(XValue), Y = double.Parse(YValue)}; 
       GesturePath.Add(tempPoint); 
       temp.GesturePath = GesturePath; 
       break; 
     } 

     GesturesList.Add(temp); 
    } 
} 

Отредактировано

+0

Не должно ли это быть хорошее время, чтобы начать использовать его? Что вы сделали до сих пор? –

+0

Возможный дубликат [Приобретение нескольких атрибутов из .xml-файла в C#] (http://stackoverflow.com/questions/15908191/acquiring-multiple-attributes-from-xml-file-in-c-sharp) –

+0

У меня есть отредактировал сообщение, может быть, код позади поможет –

ответ

2

Я считаю Linq2Xml проще в использовании

var points = XDocument.Load(filename) 
      .Descendants("Point") 
      .Select(p => new Point((int)p.Attribute("x"), (int)p.Attribute("y"))) 
      .ToList(); 
+1

Большое спасибо, это сработало :) –

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