【问题标题】:PHP - Parsing XML one line recordPHP - 解析 XML 单行记录
【发布时间】:2013-12-02 09:50:17
【问题描述】:

我有以下问题。我有一个具有以下结构的 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 结构一起工作? 任何帮助将不胜感激。

谢谢。

【问题讨论】:

标签: php xml csv


【解决方案1】:

您需要从 SimpleXmlElement 属性中获取数据。

检查以下内容:PHP SimpleXmlElement Attributes

【讨论】:

    【解决方案2】:

    尝试使用

    $xml->record[0]->attributes()
    

    而不是

    $xml->record
    

    要了解它,请点击here

    【讨论】:

      【解决方案3】:

      您可以通过以下两种方式之一访问 XML 节点元素:

      1. 前面提到的PHP SimpleXmlElement Attributes function;
      2. 使用['']直接访问。

      由于第一种方法的例子很多,我给你一个第二种方法的工作示例:

      <?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
          )
      )
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-11-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多