【发布时间】:2021-07-01 04:01:05
【问题描述】:
我正在尝试通过 PHP 将 XML 转换为 Json,但我不知道如何序列化对象。基本上,我输入了一个具有递归结构的 XML 文件(file.xml),我想将其转换为 Json(out.json)。
xml 文件示例:
<Transfer>
<Name>Transfer</Name>
<Title>Transfer + Date</Title>
<Level1>
<Name>Item 1</Name>
<Title>Title 1</Title>
<className>middle-level</className>
<Level2>
<Name>Item 1.1</Name>
<Title>Title 1.1</Title>
<className>product-dept</className>
</Level2>
<Level2>
<Name>Item 1.2</Name>
<Title>Title 1.2</Title>
<className>product-dept</className>
<Level3>
<Name>Item 1.2.1</Name>
<Title>Title 1.2.1</Title>
<className>pipeline1</className>
</Level3>
<Level3>
<Name>Item 1.2.2</Name>
<Title>Title 1.2.2</Title>
<className>pipeline1</className>
</Level3>
</Level2>
</Level1>
<Level1>
<Name>Item 2</Name>
<Title>Title 2</Title>
<className>middle-level</className>
</Level1>
</Transfer>
所需的 JSON 输出:
{
'name': 'Transfer',
'title': 'transfer Date',
'children': [
{ 'name': 'Item 1', 'title': 'Title 1', 'className': 'middle-level',
'children': [
{ 'name': 'Item 1.1', 'title': 'Title 1.1', 'className': 'product-dept' },
{ 'name': 'Item 1.2', 'title': 'Title 1.2', 'className': 'product-dept',
'children': [
{ 'name': 'Item 1.2.1', 'title': 'Title 1.2.1', 'className': 'pipeline1' },
{ 'name': 'Item 1.2.2', 'title': 'Title 1.2.2', 'className': 'pipeline1' },
]
}
]
},
{ 'name': 'Item 2', 'title': 'Title 2', 'className': 'middle-level'}
]
}
所有这一切都使用 php 代码:
$xml = simplexml_load_file("file.xml");
$result = [];
foreach ($xml->Level1 as $value)
{
$child = [];
$child['Name'] = (string)$value->Name;
$child['Title'] = (string)$value->Title;
$child['className'] = (string)$value->className;
foreach ($xml->Level2 as $level2)
{
$child = [];
$child['Level2'] = (string)$value->Level2->Name;
}
$result[] = $child;
}
$json_string = json_encode($result);
print_r($json_string);
目前,我只是在转换图表的一部分,但我不明白如何做更多。 我认为我想做的事情并不太复杂但我被阻止了。
感谢您的帮助。
【问题讨论】: