#arrays #xml #codeigniter
#массивы #xml #codeigniter
Вопрос:
Я хочу создать XML-данные с атрибутом, используя PHP array в codeigniter (я использую Google map, и для этого мне нужно создать xml-данные, но в формате атрибута, и я получаю данные в формате xml tag, я создаю xml из моего PHP array, который я создаю из базы данных, используя MySqli)
Я пробовал это.
public function display_xml()
{
$this->load->dbutil();
$data = $this->db->query('select * from markers');
$config = array (
'root' => 'markers',
'element' => 'marker',
'newline' => "n",
'tab' => "t"
);
$xml = $this->dbutil->xml_from_result($data, $config);
$this->output->set_content_type('text/xml');
$this->output->set_output($xml);
}
Я получаю этот вывод..
<markers>
<marker>
<id>1</id>
<name>Love.Fish</name>
<address>580 Darling Street, Rozelle, NSW</address>
<lat>-33.861034</lat>
<lng>151.171936</lng>
<type>restaurant</type>
</marker>
<marker>
<id>2</id>
<name>Young Henrys</name>
<address>76 Wilford Street, Newtown, NSW</address>
<lat>-33.898113</lat>
<lng>151.174469</lng>
<type>bar</type>
</marker>
</markers>
Я хочу этот вывод
<markers>
<marker id="1" name="Billy Kwong" address="1/28 Macleay Street, Elizabeth Bay, NSW" lat="-33.869843" lng="-151.225769" type="restaurant"/>
<marker id="2" name="Love.Fish" address="580 Darling Street, Rozelle, NSW" lat="-33.861034" lng="151.171936" type="restaurant"/>
</markers>
Ответ №1:
Здесь нам нужно использовать createAttribute.
public function display_xml()
{
$this->load->dbutil();
$data = $this->db->query('select * from markers');
$markers_data = $data->result_array();
$this->output->set_content_type('text/xml');
$dom = new DOMDocument("1.0");
// create root element
$root = $dom->createElement("markers");
$dom->appendChild($root);
foreach ($markers_data as $value)
{
// create child element
$marker = $dom->createElement("marker");
$root->appendChild($marker);
// create attribute node
$id = $dom->createAttribute("id");
$marker->appendChild($id);
// create attribute value node
$priceValue = $dom->createTextNode($value['id']);
$id->appendChild($priceValue);
// create attribute node
$name = $dom->createAttribute("name");
$marker->appendChild($name);
// create attribute value node
$nameValue = $dom->createTextNode($value['name']);
$name->appendChild($nameValue);
// create attribute node
$address = $dom->createAttribute("address");
$marker->appendChild($address);
// create attribute value node
$addressValue = $dom->createTextNode($value['address']);
$address->appendChild($addressValue);
// create attribute node
$lat = $dom->createAttribute("lat");
$marker->appendChild($lat);
// create attribute value node
$latValue = $dom->createTextNode($value['lat']);
$lat->appendChild($latValue);
// create attribute node
$lng = $dom->createAttribute("lng");
$marker->appendChild($lng);
// create attribute value node
$lngValue = $dom->createTextNode($value['lng']);
$lng->appendChild($lngValue);
// create attribute node
$type = $dom->createAttribute("type");
$marker->appendChild($type);
// create attribute value node
$typeValue = $dom->createTextNode($value['type']);
$type->appendChild($typeValue);
}
// save and display tree
echo $dom->saveXML();
}