arrays - 我想在 codeigniter 中创建带有属性的 xml 数据
问题描述
我想在 codeigniter 中使用 PHP 数组创建带有属性的 XML 数据(我正在使用 Google 地图,为此我必须以属性格式创建 xml 数据,并且我正在以 xml 标记格式获取数据,我正在从我的 PHP 数组创建 xml whoich 我使用 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>
解决方案
这里我们需要使用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();
}
推荐阅读
- python - Twilio:将记录转录成文本(python)
- azure - 如何防止 Azure 流分析作业读取不完整的文件
- oracle - 找出 oracle 表的加载机制
- react-native - React Native 在 TextInput 中禁用键盘但允许光标
- php - Symfony/Doctrine/authentication,我无法恢复角色
- javascript - 如何按条件为json对象设置值?
- go - exec:“gcc”:尝试构建时在 %PATH% 中找不到可执行文件
- dictionary - 如果不存在,则映射重复键值对
- opengl - gl_deletebuffers 不在单独的线程中工作
- reactjs - redux 表单字段的单选按钮