парсинг xml с использованием xpath - PullRequest
0 голосов
/ 16 октября 2011

У меня есть следующий документ xml:

<DynaCal>
  <Events>
    <Event>
      <ShortDesc>7th Grade Volleyball BBC Tournament: Pettisville vs. Hilltop/Edon winner in Match 4 of the day.  Match 1 begins at 9:00 AM</ShortDesc>
      <Date>10/15/2011</Date>
      <LocationDesc>Fayette High School</LocationDesc>
      <Time>9:00 AM</Time>
    </Event>

    <Event>
      <ShortDesc>8th Grade Volleyball BBC Tournament: Pettisville vs. Stryker/North Central winner in Match 3 of the day.  Match 1 begins at 9:00 AM</ShortDesc>
      <Date>10/15/2011</Date>
      <LocationDesc>Fayette High School</LocationDesc>
      <Time>9:00 AM</Time>
    </Event>

    <Event>
      <ShortDesc>Varsity Cross Country Practice</ShortDesc>
      <Date>10/15/2011</Date>
      <LocationDesc>Oak Openings</LocationDesc>
      <Time>9:00 AM - 11:30 AM</Time>
    </Event>

    <Event>
      <ShortDesc>Varsity Cross Country Practice</ShortDesc>
      <Date>10/17/2011</Date>
      <LocationDesc>Pettisville School</LocationDesc>
      <Time>3:15 PM - 5:30 PM</Time>
    </Event>

    <Event>
      <ShortDesc>Varsity Volleyball Practice</ShortDesc>
      <Date>10/17/2011</Date>
      <LocationDesc>Pettisville Varsity Gym</LocationDesc>
      <Time>3:30 PM - 5:30 PM</Time>
    </Event>

    <Event>
      <ShortDesc>Varsity Cross Country Practice</ShortDesc>
      <Date>10/18/2011</Date>
      <LocationDesc>Oak Openings</LocationDesc>
      <Time>3:15 PM - 5:30 PM</Time>
    <Event>
  </Events>
</DynaCal>

документ, и я хотел бы отобразить его, чтобы все события с одинаковым отображением даты

<h4>Date 1</h4>
<p>ShortDesc</p>
<p>Time</p>
<p>ShortDesc</p>
<p>Time</p>

<h4>Date 2</h4>
<p>ShortDesc</p>
<p>Time</p>
<p>ShortDesc</p>
<p>Time</p>

Я мог легко разобрать xml и вытащитьЧто касается этих элементов, я очень новичок в php и в том, как настроить массив для поиска дочернего элемента (Date) и отображения всех событий за эту дату, а затем перейти к следующей дате.

1 Ответ

1 голос
/ 16 октября 2011

Делайте это по частям. Сначала захватите каждое событие, а затем удалите дубликаты в PHP. Примерно так:

$values = array();
$xml = simplexml_load_file($file);
foreach ($xml->xpath('/DynaCal/Events/Event') as $event)
{
    // Add your values to an array here
    $values[]['shortDesc'] = $event->ShortDesc;

    // Then dedup here (add items conditionally depending on date)
}

// Or dedup here after the loop is done... :)
...