Ana*_*ent 2 php xml mysql laravel laravel-4
我有一个Laravel模板,我想根据它生成一个XML文件.
例如,结构具有名称,XPath和类型.所以XML应该如下所示:
<name>
</name>
<type>
</type>
<xpath>
</xpath>
Run Code Online (Sandbox Code Playgroud)
当然,我正在寻找能够处理关系的更复杂的东西.
那有什么工具吗?
我正在使用MySQL,所以也许有一个工具呢?或者也许是PHP脚本?
我已经尝试过搜索,我发现的所有工具都是从XSD生成HTML表单和从XSD生成通用XML的工具.
表格及其列是:
xml_document 带列的表: idgeneral_information表列:id,xml_document_id,domain,start_url和'类别master_information表列:id,xml_document_id,container,和next_pagemaster_attribute表列:id,master_information_id,name,xpath,和typedetails_attribute表列:id,xml_document_id,和type您可能会注意到,之间的关系:
根据Laravel文档,集合及其关系可以输出到数组:
$roles = User::find(1)->roles->toArray();
Run Code Online (Sandbox Code Playgroud)
例如,我有两个型号,User以及Phone和用户hasMany()的手机.
users phones
+----+--------+ +----+-----------+---------+
| id | name | | id | number | user_id |
+----+--------+ +----+-----------+---------+
| 1 | user 1 | | 1 | 111111111 | 1 |
| 2 | user 2 | | 2 | 222222222 | 2 |
+----+--------+ | 3 | 333333333 | 1 |
+----+-----------+---------+
Run Code Online (Sandbox Code Playgroud)
我们可以使用该toArray()方法返回一个数组,并with()提取所有相关的Phones:
$users = User::with('phones')->get()->toArray();
Run Code Online (Sandbox Code Playgroud)
给出这个(hidden为了这个答案的目的,我在模型上有一些字段):
Array (
[0] => Array (
[id] => 1
[name] => user 1
[phones] => Array (
[0] => Array (
[id] => 1
[number] => 111111111
[user_id] => 1
)
[1] => Array (
[id] => 3
[number] => 333333333
[user_id] => 1
)
)
)
[1] => Array (
[id] => 2
[name] => user 2
[phones] => Array (
[0] => Array (
[id] => 2
[number] => 222222222
[user_id] => 2
)
)
)
)
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用各种方法将数组转换为XML.这是我从SO上的另一个答案中解脱出来的
function array_to_xml(array $arr, SimpleXMLElement $xml)
{
foreach ($arr as $k => $v) {
is_array($v)
? array_to_xml($v, $xml->addChild($k))
: $xml->addChild($k, $v);
}
return $xml;
}
Run Code Online (Sandbox Code Playgroud)
示例输出:
<?xml version="1.0"?>
<root><0><id>1</id><name>user 1</name><phones><0><id>1</id><number>111111111</number><user_id>1</user_id></0><1><id>3</id><number>333333333</number><user_id>1</user_id></1></phones></0><1><id>2</id><name>user 2</name><phones><0><id>2</id><number>222222222</number><user_id>2</user_id></0></phones></1></root>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12839 次 |
| 最近记录: |