【发布时间】:2012-03-06 21:38:36
【问题描述】:
我正在将一个 php 数组转换为 xml,如下所示:
$bigArray = $readConnection->fetchAll($query);
$doc = new DOMDocument();
$doc->formatOutput = true;
$r = $doc->createElement( "DATA" );
$doc->appendChild( $r );
foreach( $bigArray as $product )
{
$b = $doc->createElement( "ITEM" );
$product_type = $doc->createElement( "PRODUCT_TYPE" );
$product_type->appendChild(
$doc->createTextNode( $product['ProductType'] )
);
$b->appendChild( $product_type );
$sku = $doc->createElement( "SKU" );
$sku->appendChild(
$doc->createTextNode( $product['SKU'] )
);
$b->appendChild( $sku );
$r->appendChild( $b );
}
echo $doc->saveXML();
这会返回一个 xml 文档,但最后会附加 null,我认为这是导致我出现其他问题的原因。因此,例如在输出的 xml 的底部,它看起来像:
</ITEM>
</DATA>
null
这个空值来自原始数组,我看看是否这样做:
print_r($bigArray)
我看到类似:
Array ( [0] => Array ( [ProductType] => simple [SKU] => 09423100010018 ) [1] => Array ( [ProductType] => simple [SKU] => 14552300010002 )) null
我是从 magento 的一个类中调用它的:
class Foo_Model_Queryone extends Mage_Core_Model_Abstract
{
public function pprQuery() {
$resource = Mage::getSingleton('core/resource');
$readConnection = $resource->getConnection('core_read');
$query = ("SELECT cpe.type_id AS 'ProductType',
cpe.sku AS 'SKU',
.....
【问题讨论】:
-
您的脚本是否在
echo $doc->saveXML();之后结束?我从来没有通过null随机获得saveXML()...尤其是没有其他错误 -
是的,那是该脚本的结尾。我是从 Magento 模型内部的一个类中运行它的。也许这就是它很时髦的原因
-
我认为这个
null更有可能是由继承层次结构中更高的另一个类输出的,即来自您正在扩展的类中的测试/调试代码。 -
啊,是的,谢谢马可。你是完全正确的,我没想到那里看。我得到了如果修复..你可以回答或者我会删除这个作为一种糟糕的问题。