【发布时间】:2018-02-22 07:39:58
【问题描述】:
我正在以 JSON 格式从 API 收集数据并将其转换为 XML。现在无法一次收集所有数据,因此我一次只能获得 100 个项目,并将每个 JSON 响应转换为 XML,并为每个项目创建一个单独的文件。 我正在使用变量 $i 为 JSON 增加 Page 并使用它为 XML 创建一个文件。
主要的重要数据都在里面,所以如果可能的话,我只想将这些数据添加到 xml 文件中。
function arrayToXml($array, &$xml){
foreach($array as $key => $value) {
if(is_array($value)) {
if(!is_numeric($key)){
$subnode = $xml->addChild("$key");
arrayToXml($value, $subnode);
}else{
$subnode = $xml->addChild("item$key");
arrayToXml($value, $subnode);
}
}else {
$xml->addChild("$key",htmlspecialchars("$value"));
}
}
}
$file=curl_exec($ch);
$array = json_decode ($file, true);
$xml = new SimpleXMLElement('<root/>');
arrayToXml($array, $xml);
$result = $xml->asXML($i.'name.xml');
<results>
<item0>
<_class>course</_class>
<id>364426</id>
<title>JavaScript: Understanding the Weird Parts</title>
<url>/understand-javascript/</url>
<headline>
An advanced JavaScript course for everyone! Scope, closures, prototypes, 'this', build your own framework, and more.
</headline>
<num_subscribers>100604</num_subscribers>
<avg_rating>4.77</avg_rating>
<num_reviews>23000</num_reviews>
<num_lectures>85</num_lectures>
<primary_subcategory>
<id>8</id>
<_class>course_subcategory</_class>
<title>Web Development</title>
</primary_subcategory>
<predictive_score/>
<relevancy_score>1.0704279</relevancy_score>
<input_features/>
<lecture_search_result/>
</item0>
<root>
<count>8373</count>
<next>...</next>
<previous/>
<results>...</results>
<aggregations>...</aggregations>
</root>
简而言之,我想要一个 XML 文件中的每次迭代的数据,并且如果可能的话,只需要包含关键结果及其子项的数据。如上图所示。 我只想从所有 json 响应中添加到 xml 文件中。
【问题讨论】:
-
这是我之前写的关于合并 XML 文件的答案,看看是否有帮助 - stackoverflow.com/questions/48905154/combining-xml-files-in-php/…
-
实际上我想将从 JSON 获得的新数据附加到 xml 文件中。我有将近 100 页要从 json 转换为 xml。所以我想一次性完成所有操作。