преобразование php в xml-информацию внутри xml-тега и данных trasform

#php #xml #xmlwriter

#php #xml #xmlwriter

Вопрос:

Мне нужна помощь по двум темам

Первый:

Мне нужно перенести некоторую информацию из базы данных в xml.

 $xml->startElement('job');

  $xml->startElement("jobs");
  $xml->writeRaw(utf8_encode($row['post_name']));
  $xml->endElement();

  $xml->startElement("id");
  $xml->writeRaw(utf8_encode($row['ID']));
  $xml->endElement();
  

и это дает мне результат, подобный

 <job>
<jobs>consultoresformadores-para-zona-de-lisboa</jobs>
<id>2320</id>
</job>
  

но мне нужно, чтобы это отображалось как

 <job id="2320">
<jobs>consultoresformadores-para-zona-de-lisboa</jobs>
</job>
  

Тема 2 заключается в том, что мне нужно преобразовать данные даты в определенный формат

у меня есть мой код, подобный:

 $xml->startElement("expire");
  $strval = unserialize(utf8_encode($row['meta_value']) );
  $xml->writeRaw($strval[validTo]);
  $xml->endElement();
  

И это показывает результаты, подобные

 <expire>Mon, 30 Jun 2014</expire>
  

но мне нужно, чтобы это было представлено как

 <expire>30.06.2014</expire>
  

Заранее спасибо

Комментарии:

1. Stackoverflow лучше всего работает, задавая примерно одну вещь на вопрос. Кроме того, приведенные вами примеры должны быть самодостаточными. Это требует некоторой дополнительной работы, если вы описываете внешние сервисы, такие как подключение к базе данных, поэтому лучше сократите ее до конкретных моментов, о которых вы действительно хотите спросить, например, имитируйте данные в переменной или массиве and, чтобы пример было легко воспроизвести. Это означает написание с нуля минимизированного примера о том, о чем вы хотите спросить.

Ответ №1:

Для первого вопроса вам нужно добавить свой атрибут с помощью функции writeAttribute (http://www.php.net/manual/en/function.xmlwriter-write-attribute.php) :

 $xml->startElement('job');

$xml->startElement("jobs");
$xml->writeAttribute("id", utf8_encode($row['ID'])); 
$xml->writeRaw(utf8_encode($row['post_name']));
$xml->endElement();
  

Что касается второго вопроса, вам нужно использовать функции date и strtotime для форматирования вашей даты :

 $xml->startElement("expire");
$strval = unserialize(utf8_encode($row['meta_value']) );
$xml->writeRaw(date("d.m.Y", strtotime($strval[validTo])));
$xml->endElement();
  

Ответ №2:

Попробуйте что-то вроде этого. Вы можете увидеть, как этот код работает онлайн в ideone. Я добавил несколько случайных значений, просто для тестирования, так что используйте ваши реальные переменные.

 <?php

$xml = new XMLWriter();
$xml->openMemory();

$xml->startElement('job');

$xml->startAttribute('id');
$xml->writeRaw(utf8_encode("123"));
$xml->endAttribute();

$xml->startElement("jobs");
$xml->writeRaw(utf8_encode("1nflktd"));

$xml->endElement();

$xml->startElement("expire");
$t = "Mon, 30 Jun 2014";
$xml->writeRaw(date("d.m.Y", strtotime($t)));
$xml->endElement();

$xml->endDocument();

echo $xml->outputMemory();
  

Ваши ответы:

  1. Запустите атрибут внутри вашего job узла
  2. Используйте date и strtotime для преобразования вашей даты.

http://ideone.com/rduAGI

Ответ №3:

Попробуйте с этим.

 $xml = new XMLWriter();
$xml->openMemory();
$xml->startElement("job");
$xml->writeAttribute("id", utf8_encode($row['ID'])); 
$xml->startElement("jobs");
$xml->writeRaw(utf8_encode($row['post_name']));
$xml->endElement();
$xml->endElement();

$xml->startElement("expire");
$strval = unserialize(utf8_encode($row['meta_value']));
$xml->writeRaw(date("d.m.Y", strtotime($strval[validTo])));
$xml->endElement();
print $xml->flush();