0

Есть класс td в нем классы tr, они все(tr) различают по значению class, нужно получить например XML

<table id="economicCalendarData" class="genTbl closedTbl ecoCalTbl persistArea">
  <tbody pageStartAt ="" >
    <tr>
      <td colspan="9" class="theDay" id="theDay1528070400">Понедельник, 4 июня 2018 г.</td>
    </tr>
    <tr id="eventRowId_75">
      <td class="first left">Весь день</td>
      <td class="flagCur left">
        <span title="Новая Зеландия" class="ceFlags New_Zealand float_lang_base_1" data-img_key="New_Zealand"></span>
      </td>
      <td class="left textNum sentiment">
        <span class="bold" >Праздник</span>
      </td>
      <td colspan="6" class="left event">Новая Зеландия - День рождения королевы</td>
    </tr>
    <tr id="eventRowId_368054" class="js-event-item " event_attr_ID="209" data-event-datetime="2018/06/04 02:50:00">
      <td class="first left time js-time"  title="">02:50</td>
      <td class="left flagCur noWrap">
        <span title="Япония" class="ceFlags Japan" data-img_key="Japan"></span> JPY
      </td>
      <td class="left textNum sentiment noWrap" title="Низкая волатильность" data-img_key="bull1">
        <i class="grayFullBullishIcon"></i>
        <i class="grayEmptyBullishIcon"></i>
        <i class="grayEmptyBullishIcon"></i>
      </td>
      <td class="left event" title="Для получения дополнительной информации нажмите здесь">
        <a href="/economic-calendar/monetary-base-209" target="_blank">
          Денежная база (г/г)
        </a>
      </td>
      <td class="bold act greenFont event-368054-actual" title="Лучше ожидаемого" id="eventActual_368054">8,1%</td>
      <td class="fore  event-368054-forecast " id="eventForecast_368054">7,4%</td>
      <td class="prev blackFont  event-368054-previous" id="eventPrevious_368054">
        <span title="">7,8%</span>
      </td>
      <td class="alert js-injected-user-alert-container "  data-name ="Денежная база" data-event-id="209" data-status-enabled="0">
        <span class="alertBellGrayPlus genToolTip oneliner" data-tooltip="Создать уведомление" data-tooltip-alt="Уведомление активно"></span>
      </td>
    </tr>

Нужно выбрать из class="left flagCur noWrap"

<td class="left flagCur noWrap"><span title="Япония" class="ceFlags Japan" data-img_key="Japan"></span> JPY</td>

Получить значение span title, data-img_key Проблема заключается в том что все классы начинаются с td, тем самым я не могу добраться до нужного подкласса tr Использую код для получения значение id в классе td

XmlDocument doc = new XmlDocument();
doc.Load("xmltext.xml");
foreach(XmlNode node in doc.DocumentElement)
{
    string name = node.Attributes[0].Value;}
}
  • 3
    Возможный дубликат вопроса: Как распарсить HTML в .NET? – Kirill Filippenko Jun 05 '18 at 07:42
  • Используйте запросы selectSingleNode или selectNodes. эти два ф-ции есть во многих редакциях xml. Ну и читать XPath-запросы. – nick_n_a Jun 05 '18 at 07:44
  • @nick_n_a значение класса td я получаю так XmlDocument doc = new XmlDocument(); doc.Load("xmltext.xml");
            foreach(XmlNode node in doc.DocumentElement)
            {
                string name = node.Attributes[0].Value;
    
    – Егор Глухов Jun 05 '18 at 07:50
  • Нажмите править - и соберите всё до кучи, что б было понятно что у вас не получается. – nick_n_a Jun 05 '18 at 07:52
  • Хороший пример https://ru.stackoverflow.com/questions/441880/xpath-%d0%bf%d0%be%d0%bb%d1%83%d1%87%d0%b8%d1%82%d1%8c-%d0%bd%d0%be%d0%bc%d0%b5%d1%80-%d1%83%d0%b7%d0%bb%d0%b0-%d0%b8-%d1%83%d0%bc%d0%bd%d0%be%d0%b6%d0%b8%d1%82%d1%8c – nick_n_a Jun 05 '18 at 07:52
  • пример 2 https://ru.stackoverflow.com/questions/667121/xpath-%d0%be%d0%b4%d0%bd%d0%be%d0%b3%d0%be-%d1%83%d1%80%d0%be%d0%b2%d0%bd%d1%8f – nick_n_a Jun 05 '18 at 07:52
  • Просмотрите этот список https://ru.stackoverflow.com/search?q=xpath+%5Bc%23%5D xpath + c# – nick_n_a Jun 05 '18 at 07:53
  • 4
    Уважаемый, вы уже 2-ой вопрос задаете и не как не можете понять одно. Вы изобретаете велосипед и воспринимаете HTML как XML, да, HTML построен на XML, но это два разных формата со своими тонкостями. Зачем изобретать что то, если есть куча отличных вариантов (которые вам уже 2-ой вопрос подряд советуют)? – EvgeniyZ Jun 05 '18 at 08:01
  • Попробуйте например AngleSharp из сводного вопроса про парсинг html. – A K Jun 05 '18 at 08:06
  • 1
    По поводу обновлённого вопроса. Ваш первый foreach - перебирает елементы первого уровня. Что б добраться до элеменотов второго уровня - нужен ещё один foreach - обойти деток. – nick_n_a Jun 05 '18 at 09:09
  • 1
    Вот пример, чуть другой способ, но более нажёжный перебора https://ru.stackoverflow.com/a/84406/17974 если вас именно перебор интерисует. – nick_n_a Jun 05 '18 at 09:11
  • Если же вы хотите замахнуться - написать свой браузер - то это другой вопрос. Тогда вам нужены соовсем другие методы. – nick_n_a Jun 05 '18 at 09:13
  • <td> - это элемент. Не зовите эту сущность классом. Почему бы сперва букварь по xml/html не почитать? – Alexander Petrov Jun 05 '18 at 10:08
  • @Alexander Petrov в данный момент читаю – Егор Глухов Jun 05 '18 at 10:12

0 Answers0