php到xml标签内的xml信息并转换数据

I need some help with 2 subjects

First:

I need to have some info from a database into a a 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();

and this give me the result like

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

but i need it to be shown like

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

The 2 subject is that i need to transform a date data to a specific format

i have my code like:

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

And it shows results like

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

but i need it to be presented like

<expire>30.06.2014</expire>

Thanks in advanced

For the first question, you need to add your attribute using the writeAttribute function (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();

For the second question, you need to use the date and strtotime functions to format your date :

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

Try something like this. You can see this code working online in ideone. I added some random values, just for testing, so change with your real vars.

<?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();

Your answers:

  1. Start an attribute inside your job node
  2. Use date and strtotime to convert your date.

http://ideone.com/rduAGI

Try with this.

$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();