我需要从带有数据的数组创建xml提要,所以我使用了一个foreach循环来创建它,但是当我print_r结果时,唯一打印出的部分是在foreach循环开始之前的部分,我测试了外面的数组,它有数据并正确显示了
<PriceHeader>
<version>1.5.1</version>
</PriceHeader>';
foreach($sorted_data as $data){
'<Price>
<itemIdentifier>
<sku>'.$data["SKU"].'</sku>
</itemIdentifier>
<pricingList>
<pricing>
<currentPrice>
<value currency="USD" amount='.$data["Price"].'></value>
</currentPrice>
</pricing>
</pricingList>
</Price>';
}
'</PriceFeed>';
如果我print_r那个var,我唯一的输出是1.5.1,但是检查chrome中的元素显示我也创建了html结构,直到循环开始。 / p>
答案 0 :(得分:1)
您可以在PHP中使用SimpleXMLElement
。有关更多信息,您可以访问PHP.net
此外,如果要在浏览器中查看XML,可以将htmlspecialchars
函数与echo一起使用。
我尝试更改您的代码为例。
希望对您有帮助。
编码不错:)
<?php
$string = "";
$string .="<PriceFeed>
<PriceHeader>
<version>1.5.1</version>
</PriceHeader>";
foreach($sorted_data as $data){
$string.= "<Price>
<itemIdentifier>
<sku>".$data["SKU"]."</sku>
</itemIdentifier>
<pricingList>
<pricing>
<currentPrice>
<value currency=\"USD\" amount=\"".$data["Price"]."\"></value>
</currentPrice>
</pricing>
</pricingList>
</Price>";
}
$string.= "</PriceFeed>";
$xml = new SimpleXMLElement($string);
$output = $xml->asXML();
echo "<pre>";
echo htmlspecialchars($output);
echo "</pre>";
?>
答案 1 :(得分:0)
我通过使用XMLwriter创建xml字符串来修复它,这是代码的结尾方式:
$xw = xmlwriter_open_memory();
xmlwriter_set_indent($xw, 1);
$res = xmlwriter_set_indent_string($xw, ' ');
xmlwriter_start_document($w, '1.0', 'UTF-8');
xmlwriter_start_element($xw, 'PriceFeed');
xmlwriter_start_attribute($xw, 'xmlns');
xmlwriter_text($xw, 'http://walmart.com/');
xmlwriter_end_attribute($xw);
xmlwriter_start_element($xw, 'PriceHeader');
xmlwriter_start_element($xw, 'version');
xmlwriter_text($xw, '1.5.1');
xmlwriter_end_element($xw);
xmlwriter_end_element($xw);
foreach($sorted_data as $data){
xmlwriter_start_element($xw, 'Price');
xmlwriter_start_element($xw, 'itemIdentifier');
xmlwriter_start_element($xw, 'sku');
xmlwriter_text($xw, $data["SKU"]);
xmlwriter_end_element($xw);
xmlwriter_end_element($xw);
xmlwriter_start_element($xw, 'pricingList');
xmlwriter_start_element($xw, 'pricing');
xmlwriter_start_element($xw, 'currentPrice');
xmlwriter_start_element($xw, 'value');
xmlwriter_start_attribute($xw, 'currency');
xmlwriter_text($xw, 'USD');
xmlwriter_start_attribute($xw, 'amount');
xmlwriter_text($xw, $data['Price']);
xmlwriter_end_attribute($xw);
xmlwriter_end_element($xw);
xmlwriter_end_element($xw);
xmlwriter_end_element($xw);
xmlwriter_end_element($xw);
xmlwriter_end_element($xw);
xmlwriter_end_element($xw);
}
xmlwriter_end_document($xw);
echo xmlwriter_output_memory($xw);