XML多个属性

时间:2014-02-16 20:16:10

标签: c# xml parsing

我有这样的事情:

<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);
    }
}

已编辑

1 个答案:

答案 0 :(得分:2)

我发现Linq2Xml更容易使用

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