2014-09-29 71 views
1

所以我得到了这个XML。 我在XML中有很多类似的块,我可以通过它循环。但是,我怎么知道有多少块? 或者我会如何停止后最后一个块?到达最后一个XML元素

任何建议表示赞赏。

<StockBalanceOut xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/BON_StockBalanceOut" class="entity"> 
<_DocumentHash>f5a598f180ccdecffeb7774d58ca8743</_DocumentHash> 
<AvailPhysicalAvailableQty>0</AvailPhysicalAvailableQty> 
<AvailPhysicalReservedQty>0</AvailPhysicalReservedQty> 
<AvailPhysicalReturnQty>0</AvailPhysicalReturnQty> 
<AvailPhysicalReworkQty>0</AvailPhysicalReworkQty> 
<AvailPhysicalScrapQty>0</AvailPhysicalScrapQty> 
<Date>2014-09-26</Date> 
<ItemId>15742-20907</ItemId> 
<ItemShippingClass>Empty</ItemShippingClass> 
<OnOrderQty>0</OnOrderQty> 
<PhysicalInventAvailableQty>0</PhysicalInventAvailableQty> 
<PhysicalInventReservedQty>0</PhysicalInventReservedQty> 
<PhysicalInventReturnQty>0</PhysicalInventReturnQty> 
<PhysicalInventReworkQty>0</PhysicalInventReworkQty> 
<PhysicalInventScrapQty>0</PhysicalInventScrapQty> 
<RecId>5637416600</RecId> 
<RecVersion>1</RecVersion> 
<Time>15:25:52</Time> 
</StockBalanceOut> 
<StockBalanceOut xmlns="http://schemas.microsoft.com/dynamics/2008/01/documents/BON_StockBalanceOut" class="entity"> 
<_DocumentHash>6c6a3aa160f3ab9388f8e1b5b2fd7dc1</_DocumentHash> 
<AvailPhysicalAvailableQty>99</AvailPhysicalAvailableQty> 
<AvailPhysicalReservedQty>0</AvailPhysicalReservedQty> 
<AvailPhysicalReturnQty>0</AvailPhysicalReturnQty> 
<AvailPhysicalReworkQty>0</AvailPhysicalReworkQty> 
<AvailPhysicalScrapQty>0</AvailPhysicalScrapQty> 
<Date>2014-09-26</Date> 
<ItemId>21234-29752</ItemId> 
<ItemShippingClass>Empty</ItemShippingClass> 
<OnOrderQty>0</OnOrderQty> 
<PhysicalInventAvailableQty>99</PhysicalInventAvailableQty> 
<PhysicalInventReservedQty>0</PhysicalInventReservedQty> 
<PhysicalInventReturnQty>0</PhysicalInventReturnQty> 
<PhysicalInventReworkQty>0</PhysicalInventReworkQty> 
<PhysicalInventScrapQty>0</PhysicalInventScrapQty> 
<RecId>5637416601</RecId> 
<RecVersion>1</RecVersion> 
<Time>15:25:52</Time> 
</StockBalanceOut> 
+0

请显示您的当前代码“循环” – Steve 2014-09-29 19:44:29

+0

当您说“blocks”时,您的意思是什么? XML标签? – 2014-09-29 19:44:49

+0

@Steve 我甚至无法启动,因为我不知道最终参数。 – user3369276 2014-09-29 19:47:15

回答

1

从您的XML中,我得到了这些信息。 有多个“块”为<StockBalanceOut>,您可以访问每一个通过: -

$objectOfXMLFile->StockBalanceOut[0]; 
$objectOfXMLFile->StockBalanceOut[1]; 

为了达到到最后,你可以运行一个while循环。如果任何索引(假设10不存在)for StockBalanceOut不存在,则它将返回null。

$counter=0; //run from 0 
    while(!is_null($xmlOBJ->StockBalanceOut[$counter])) 
    { 
//do anything here 
    $counter++; 
    } 
1

我会看看尝试类似this。为了节省链接旅程,以下是一些示例代码,以帮助您入门。

<?php 
$xml = <<<EOF 
<people> 
<person name="Person 1"> 
    <child/> 
    <child/> 
    <child/> 
</person> 
<person name="Person 2"> 
    <child/> 
    <child/> 
    <child/> 
    <child/> 
    <child/> 
</person> 
</people> 
EOF; 

$elem = new SimpleXMLElement($xml); 

foreach ($elem as $person) { 
    printf("%s has got %d children.\n", $person['name'], $person->count()); 
} 
?>