2016-09-12 2 views
1

나는이PHP SimpleXML을 노드와 동일한 수준

<ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500"> 
<StockQuant storeId="72">1.0</StockQuant> 
<StockQuant storeId="Utstilling">1.0</StockQuant> 
<PosterName></PosterName> 
<PosterDescription></PosterDescription> 
<Dimension></Dimension> 
<Assembled></Assembled> 
<AssemblyPrice></AssemblyPrice> 
</ArticleId> 

내가 simplexml_load_file를 사용하여 많은은 articleID 요소를() contais 파일에서이로드처럼 보이는 XML이있다.

문제점은 StockQuant에 대한 모든 정보를 얻지 못하는 것입니다. 만약 내가 print_r XML을 누른 다음 데이터를 얻을; 1.0이지만 속성을 얻지는 못합니다. storeId = "72"입니다. 내가 예제 belove처럼하면 StockQuant 요소 하나만 얻게됩니다.

는이 같은 요소를 반복 :

foreach($xml as $key => $value) 
{ 
    foreach($value->StockQuant as $key2 => $value2) 
    { 
     $stocks = simplexml_import_dom($value2); 
     print_r($stocks); 
    } 
} 

이 * 편집은 foreach 루프를 추가 할 수 있습니다. 코드 아래

답변

-1

이 작업을 수행 할 수 있습니다

$xml = simplexml_load_file('file.xml'); 

foreach($xml as $article) 
{ 
    // there are multiple quantities 
    foreach($article->StockQuant as $quantity) 
    { 
     echo $quantity[0]; 
     echo ' '; 
     echo $quantity->attributes()->storeId; 
     echo '<br/>'; 
    } 
} 

출력한다 :

1.0 72 
1.0 Utstilling 
3.0 12 
1.0 Utstilling 
6.0 13 
1.0 Utstilling 

XML은 그 다음과 같습니다

<Articles> 
    <ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500"> 
     <StockQuant storeId="72">1.0</StockQuant> 
     <StockQuant storeId="Utstilling">1.0</StockQuant> 
     <PosterName></PosterName> 
     <PosterDescription></PosterDescription> 
     <Dimension></Dimension> 
     <Assembled></Assembled> 
     <AssemblyPrice></AssemblyPrice> 
    </ArticleId> 
    <ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500"> 
     <StockQuant storeId="12">3.0</StockQuant> 
     <StockQuant storeId="Utstilling">1.0</StockQuant> 
     <PosterName></PosterName> 
     <PosterDescription></PosterDescription> 
     <Dimension></Dimension> 
     <Assembled></Assembled> 
     <AssemblyPrice></AssemblyPrice> 
    </ArticleId> 
    <ArticleId keyId="3d5c0332:1533c106ef9:67eb" price="6495,00" primId="HP229141500"> 
     <StockQuant storeId="13">6.0</StockQuant> 
     <StockQuant storeId="Utstilling">1.0</StockQuant> 
     <PosterName></PosterName> 
     <PosterDescription></PosterDescription> 
     <Dimension></Dimension> 
     <Assembled></Assembled> 
     <AssemblyPrice></AssemblyPrice> 
    </ArticleId> 

</Articles> 
0

시도 :

foreach($xml as $key => $value) 
{ 
    foreach($value->StockQuant as $key2 => $value2) 
    { 
     echo $value2['storeId']. "\n" ;   
    } 
} 
+1

나는 말해야했다. foreach 루프를 사용하여 ArticleId 요소를 모두 반복합니다. 그리고 그런 식으로 StockQuant를 참조 할 수 없습니다. 내가 가장 가까이 온 것은 다음과 같다 : foreach ($ value-> StockQuant as $ key2 => $ value2) { $ stocks = simplexml_import_dom ($ value2); print_r ($ stocks); }' 하나의 노드에 대한 모든 데이터를 제공하지만 하나 이상의 노드를 가져 오지 않습니다. – johnohod

+0

링크를 참조하십시오. https://eval.in/640219 – SCC

+0

닫기,하지만 $ value-> StockQuant가 아닌 $ value (예제에서)를 반복 할 경우 동일한 결과를 얻을 수 있습니까? – johnohod