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

时间:2014-07-07 14:01:29

标签: php xml xmlwriter

我需要2个科目的帮助

首先:

我需要从数据库中获取一些信息到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>

先谢谢

3 个答案:

答案 0 :(得分:0)

尝试这样的事情。您可以在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. 中启动一个属性
  3. 使用datestrtotime转换您的日期。
  4. http://ideone.com/rduAGI

答案 1 :(得分:0)

对于第一个问题,您需要使用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();

对于第二个问题,您需要使用日期和strtotime函数来设置日期格式:

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

答案 2 :(得分:0)

试试这个。

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