【问题标题】:get the value of a child获取孩子的价值
【发布时间】:2014-06-13 01:28:22
【问题描述】:

在 Stackoverflow 用户的帮助下,我解决了很多问题。 我有这个 XML 女巫是根节点的孩子之一:

<ChannelStatistics ChannelId="DMAT" CounterDim="">
  <TotalCount>104</TotalCount>
     <DefectCounter ClassId="F1">62</DefectCounter>
     <DefectCounter ClassId="F2">34</DefectCounter>
     <DefectCounter ClassId="F3">8</DefectCounter>
</ChannelStatistics>

<ChannelStatistics ChannelI="FERRO" CounterDim="">
  <TotalCount>17</TotalCount>
     <DefectCounter ClassId="F1">2</DefectCounter>
     <DefectCounter ClassId="F2">5</DefectCounter>
     <DefectCounter ClassId="F3">10</DefectCounter>
</ChannelStatistics>

并使用此 php 代码

 $obj = simplexml_load_file('data\data.xml');
   foreach($obj->PieceReport->Piece->DeviceValuation->ChannelStatistics as $channel){
    echo $channel->attributes()->ChannelId;
    echo " - "; 
foreach($channel->DefectCounter as $defect){
    echo $defect->attributes()->ClassId, "= ";
    echo $channel['ClassId'],"  " ;
         } 
    echo "<br>" ;
   }

我可以得到

DMAT - F1= F2= F3=

FERRO - F1= F2= F3=

但我不知道如何获取 F1、F3 和 F3 的值

我需要的结果是:

DMAT - F1=62 F2=34 F3=8

FERRO - F1=2 F2=5 F3=10

这样我就可以将它们全部保存在 Mysql 数据库中

我是 XML 和 PHP 的新手,所以我想这应该很容易。

任何帮助表示赞赏!

【问题讨论】:

标签: php xml


【解决方案1】:

您需要在代码的第 3 行访问$defect,而不是$channel属性 ClassID

foreach($channel->DefectCounter as $defect){
    echo $defect->attributes()->ClassId, "= ";
    echo $channel['ClassId'],"  " ; // <----- change needed here
} 

在第 3 行,您要访问节点的值,而不是属性:

echo $defect;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-06
  • 1970-01-01
  • 1970-01-01
  • 2017-05-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多