@anonymouss

Как правильно считать из XML?

<dataset-data>
    <limit nil="true"/>
    <transform nil="true"/>
    <column-index nil="true"/>
    <column-names type="array">
      <column-name>Date</column-name>
      <column-name>Open</column-name>
      <column-name>High</column-name>
      <column-name>Low</column-name>
      <column-name>Close</column-name>
      <column-name>Volume</column-name>
      <column-name>Ex-Dividend</column-name>
      <column-name>Split Ratio</column-name>
      <column-name>Adj. Open</column-name>
      <column-name>Adj. High</column-name>
      <column-name>Adj. Low</column-name>
      <column-name>Adj. Close</column-name>
      <column-name>Adj. Volume</column-name>
    </column-names>
    <start-date type="date">1999-11-18</start-date>
    <end-date type="date">2017-10-30</end-date>
    <frequency>daily</frequency>
    <data type="array">
      <datum type="array">
        <datum type="date">2017-10-30</datum>
        <datum type="float">67.8</datum>
        <datum type="float">67.93</datum>
        <datum type="float">67.1</datum>
        <datum type="float">67.49</datum>
        <datum type="float">846605.0</datum>
        <datum type="float">0.0</datum>
        <datum type="float">1.0</datum>
        <datum type="float">67.8</datum>
        <datum type="float">67.93</datum>
        <datum type="float">67.1</datum>
        <datum type="float">67.49</datum>
        <datum type="float">846605.0</datum>
      </datum>
      <datum type="array">
        <datum type="date">2017-10-27</datum>
        <datum type="float">67.81</datum>
        <datum type="float">68.01</datum>
        <datum type="float">67.41</datum>
        <datum type="float">67.97</datum>
        <datum type="float">1440956.0</datum>
        <datum type="float">0.0</datum>
        <datum type="float">1.0</datum>
        <datum type="float">67.81</datum>
        <datum type="float">68.01</datum>
        <datum type="float">67.41</datum>
        <datum type="float">67.97</datum>
        <datum type="float">1440956.0</datum>
      </datum>


Как правильно считать в обект после каждого там где date и float ?
желательно через LINQ+XML
  • Вопрос задан
  • 259 просмотров
Пригласить эксперта
Ответы на вопрос 2
EreminD
@EreminD
Кое-что умею
Ответ написан
Комментировать
@cicatrix
было бы большой ошибкой думать
Как-то так.
public class XmlEntry
{
    public DateTime Date { get; set; }
    public float[] Values { get; set; }
} // class XmlEntry

public IEnumerable<XmlEntry> ReadFile(string filename)
{
    XmlDocument doc = new XmlDocument();
    doc.Load(filename);
    return doc.SelectNodes("dataset/data/datum") // Здесь возможно подредактировать путь надо, у вас XML обрезан
        .OfType<XmlElement>()
        .Select(e => new XmlEntry
        {
            Date = DateTime.Parse(
                e.ChildNodes.OfType<XmlElement>()
                .Where(cn =>
                    cn.Attributes["type"].Value.Equals("date")).FirstOrDefault().InnerText),
            Values =
                e.ChildNodes.OfType<XmlElement>()
                .Where(cn =>
                    cn.Attributes["type"].Value.Equals("float"))
                    .Select(node => float.Parse(node.InnerText, System.Globalization.CultureInfo.InvariantCulture))
                    .ToArray()
        }); 
} // ReadFile
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы