parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Проверил. Я использую не html, а XML...

Sumo 23.02.2015 06:23

Описание формата — https://msdn.microsoft.com/en-us/library/aa140066%28office.10%29.aspx

У меня есть класс-хелпер — http://code.volchkov.net/parser3-pf/src/376c193ad4428ffe1557d01118315faad3cacaa8/api/office/excel/pfTableToXLS.p?at=pf

Использую в модулях на PF'е так:
@create[aOptions]
...
  $self._routeRequirements[$.slug[[a-z\-_]+] $.date[\d+\-\d+\-\d+] $.regionID[\d+]]
  ^router.assign[:slug/data/water-data-:{regionName}-:{date}.xls;data/report;$.requirements[$_routeRequirements] $.strict(true)]
...
@onDataReport[aRequest][locals]
  $lRegion[^_getRegionBySlug[$aRequest.slug]]
  $lMinDate[^core.counters.data.minDate[$.regionID[$lRegion.regionID]]]
  $lDate[^core.utils.getDay[^unsafe{^date::create[$aRequest.date]}{$_today}]]
  ^if($lDate.date < $lMinDate || $lDate.date > $_today){
    ^redirectTo[data;$.slug[$lRegion.slug]]
  }
  ^use[pf/api/office/excel/pfTableToXLS.p]
  $lConverter[^pfTableToXLS::create[$.charset[utf-8]]]

  $result[
    $.type[xml]
    $.charset[utf-8]
    $.content-type[$lConverter.contentType]
    $.body[^lConverter.convert[^core.reports.countersDataForDate[
      $.regionID[$lRegion.regionID]
      $.baseDate[$lDate.date]
    ]][
      $.fields[
        $.address[Адрес]
        $.devID[Счетчик]
        $.type[Вода]
        $.value[Показание]
        $.aggregateDate[Период]
        $.updatedAt[Дата]
      ]
    ]]
  ]
Когда отдаем xml браузеру, не забываем удалять пробельные смволы перед <?xml — для большинства парсеров разметки это критично.