xml xdocument,读取属性

时间:2015-10-14 09:50:27

标签: c# xml linq-to-xml

我想借助XDocument阅读XML文档。我已经在互联网上搜索正确的解决方案。我找到了这个example,但没有像它应该的那样工作。

我的XML:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<blabla>
<Infos>
<ConfigurationName>XXConfigurationName</ConfigurationName>
<DateSaved>14.10.2015 10:41:54</DateSaved>
</Infos>
<Configuration>

<DayRoutine>
  <DayRoutine ID="4">
    <Button>1</Button>
    <DayRoutinePoints>
      <Point0>00:00:00, 243</Point0>
      <Point1>00:00:00, 243</Point1>
      <Point2>00:00:00, 243</Point2>
      <Point3>00:00:00, 243</Point3>
    </DayRoutinePoints>
  </DayRoutine>

  <DayRoutine ID="3">
    <Button>5</Button>
    <DayRoutinePoints>
      <Point0>00:00:00, 243</Point0>
      <Point1>00:00:00, 243</Point1>
      <Point2>00:00:00, 243</Point2>
      <Point3>00:00:00, 243</Point3>
    </DayRoutinePoints>
  </DayRoutine>
</DayRoutine>

</Configuration>
</blabla>

我的C#代码 - 已更新:

XDocument doci = XDocument.Load(path);
        var mijav = from r in doci.Descendants("Configuration").Descendants("DayRoutine").Descendants("DayRoutine").Where(r => (int)r.Attribute("ID") == 4)
                    select new
                    {
                        Button = r.Element("Button").Value,
                        DataPoints = r.Elements("DayRoutinePoints").Select(c => (string)c.Value).ToList(),
                    };

My Current C#代码不给我任何东西。我喜欢从DayRoutine ID =&#34; 3&#34;中读取数据。怎么做?因为我试图擦除&#34;其中(r =&gt;(int)r.Attribute(&#34; ID&#34;)== 3)&#34;我从第一个&#34; DayRoutine&#34;获得结果。但我喜欢来自&#34; second&#34; DayRoutine。

后来我喜欢阅读积分。但是因为它不是每次都有相同数量的点,如何用一些循环读取这一点呢?

感谢您的帮助,请询问您是否有任何问题

1 个答案:

答案 0 :(得分:1)

  

我现在如何阅读积分?它可以是0到60之间的点。

这种基本方法为您提供XElement个点。

...
new 
{
   ...
   //DataPoints = r.Descendants("DayRoutinePoints").Descendants("Point1"),
     DataPoints = r.Elements("DayRoutinePoints").ToList(),
}

在ToList之前添加.Select(xe => ...)以转换为您自己的类。