Php foreach循环以创建xml字符串
我需要从一个包含数据的数组中创建一个xml提要,因此我使用一个foreach循环来创建它,但是当我打印结果时,唯一打印出来的部分是foreach循环开始之前的部分,我在外部测试了数组,它有数据并且正确地显示了数据Php foreach循环以创建xml字符串,php,xml,foreach,Php,Xml,Foreach,我需要从一个包含数据的数组中创建一个xml提要,因此我使用一个foreach循环来创建它,但是当我打印结果时,唯一打印出来的部分是foreach循环开始之前的部分,我在外部测试了数组,它有数据并且正确地显示了数据 <PriceHeader> <version>1.5.1</version> </PriceHeader>';
<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>';
1.5.1
';
foreach($data作为$data排序){
'
“.$data[“SKU”]”
';
}
'';
如果我打印该变量,我得到的唯一输出是1.5.1,但检查chrome中的元素会发现它也创建了html结构,直到循环开始……我通过使用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);
您可以在PHP中使用
simplexmlement
。有关更多信息,您可以访问
此外,如果希望在浏览器中查看XML,可以使用echo的htmlspecialchars
函数
我试着改变你的代码作为例子
我希望这对你有帮助
有一个很好的编码:)
asXML();
回声“;
echo htmlspecialchars($output);
回声“;
?>
当你拥有像''这样的东西时,你期待什么代码>?我还建议您使用SimpleXML之类的东西来创建内容,而不是构建字符串。你需要打开一个命令。所以可能是一个回音输出那个字符串。你能提供一个例子吗?很好,比我的好,因为它被沃尔玛订阅源接受了,尽管我不明白$string的意思,这是用于连接的吗?谢谢。是的,它意味着串接。比如:$str1=“bla1”$str2=“bla2”$str=$str1.$str2[bla1bla2]为什么要在将XML创建为文本后解析和序列化XML?这是一个不必要的步骤,不会改变任何事情。
<?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>";
?>