我有以下问题。我有一个XML文件,其结构如下:
<?xml version="1.0" encoding="utf-8"?>
<Stocproduse>
<record ProdusId="1622" Stoc="11.00"/>
<record ProdusId="1632" Stoc="11.00"/>
</Stocproduse>
我正在尝试使用以下PHP脚本将数据插入到csv文件中,但它不起作用:
$filexml='/var/www/html/site.com/Stoc_produse.xml';
$xml = simplexml_load_file($filexml);
$f = fopen('/var/www/html/site.com/stoc_produse.csv', 'w');
foreach($xml->record as $record){
$values = array("ProdusId" => $record->ProdusId, "Stoc" => $record->Stoc);
fputcsv($f, $values,','," ");
}
fclose($f);
但是,如果我按以下方式转换XML结构,它可以工作:
<?xml version="1.0" encoding="utf-8"?>
<Stocproduse>
<record>
<ProdusId>1622</ProdusId>
<Stoc>11.00</Stoc>
</record>
<record>
<ProdusId>1623</ProdusId>
<Stoc>11.00</Stoc>
</record>
</Stocproduse>
有没有人知道我应该对php脚本进行哪些修改才能使它与第一个xml结构一起使用? 任何帮助将不胜感激。
谢谢。
答案 0 :(得分:1)
您需要从SimpleXmlElement属性中获取数据。
答案 1 :(得分:1)
答案 2 :(得分:0)
您可以通过以下两种方式之一访问XML节点元素:
['']
直接访问。由于第一种方法有很多例子,我给你留下了第二种方法的实例:
<?php
$xml = <<<XML
<?xml version="1.0" encoding="utf-8"?>
<Stocproduse>
<record ProdusId="1622" Stoc="11.00"/>
<record ProdusId="1632" Stoc="11.00"/>
</Stocproduse>
XML;
$sxe = new SimpleXMLElement($xml);
foreach($sxe->record as $record){
$values = array("ProdusId" => $record['ProdusId'], "Stoc" => $record['Stoc']);
}
print_r($values);
Array
(
[ProdusId] => SimpleXMLElement Object
(
[0] => 1632
)
[Stoc] => SimpleXMLElement Object
(
[0] => 11.00
)
)