2011-08-03 58 views
0

我想創建一個頁面,它將顯示來自XML文檔的特定信息。我遇到了一個麻煩,我想找出實現這一目標的最佳方式。SimpleXML PHP格式

我的XML是一個龐大的名單,它是從一個名爲陸軍生成器的程序構建的。我正試圖爲每個「小隊」動態提供特定信息。

現在,我的代碼示例如下:

<?PHP 
     //THIS SECTION FINDS THE SQUAD/UNIT NAME OF THE FIRST ENTITY 
     foreach($squad->xpath('entity') as $squadSub){ 
      $squadSubName = stripslashes($squadSub['name']); 
      $squadSubCount = $squadSub['count']; 


      foreach($squadSub->xpath('unitstat[@id="WS"]/@value') as $squadSubStat){ 
       $unitWs = $squadSubStat; 
      } 

     ?> 
     <tr> 
      <td><?= $squadSubCount; ?></td><td><?= $squadSubName; ?></td><td><?= $unitWs; ?></td><td><?= $unitBs; ?></td><td><?= $unitSt; ?></td><td><?= $unitTo; ?></td><td><?= $unitWo; ?></td><td><?= $unitIn; ?></td><td><?= $unitAt; ?></td><td><?= $unitLd; ?></td><td><?= $unitaSv; ?></td><td><?= $unitiSv; ?></td><td><?= $unitcSv; ?></td> 
     </tr> 

是找到「unitWS」該生產線是什麼,我問。現在,如果你遵循整個xpath,它會讀取//squad/entity[@name='Nameoftheentity']/unitstat[@id="WS"]/@value,那會給我單位的WS。我需要從xml中獲取8-13個以上的值。

我會告訴你的XML/unitstat部分:

<unitstat id="iaStruPnt" name="Structure" value="-" /> 
     <unitstat id="iaVdShld" name="Void Shld" value="-" /> 
     <unitstat id="vdrAt" name="At" value="-" /> 
     <unitstat id="vdrBS" name="BS" value="-" /> 
     <unitstat id="vdrMass" name="Mass Point" value="-" /> 
     <unitstat id="vdrSize" name="Size" value="Small" /> 
     <unitstat id="vdrTpt" name="Transport" value="0" /> 
     <unitstat id="vdrVehSv" name="Veh Save" value="-" /> 
     <unitstat id="vdrWS" name="WS" value="-" /> 
     <unitstat id="vdrWpnAP" name="AP" value="-" /> 
     <unitstat id="vdrWpnRang" name="Range" value="-" /> 
     <unitstat id="vdrWpnSh" name="Shots" value="-" /> 
     <unitstat id="vdrWpnStr" name="S" value="0" /> 
     <unitstat id="vdrWpnType" name="Type" value="0" /> 
     <unitstat id="At" name="At" value="2/3" /> 
     <unitstat id="BS" name="BS" value="4" /> 
     <unitstat id="Fam" name="Familiar" value="0" /> 
     <unitstat id="Front" name="FA" value="0" /> 
     <unitstat id="Group" name="Grp" value="" /> 
     <unitstat id="In" name="In" value="4" /> 
     <unitstat id="Ld" name="Ld" value="10" /> 
     <unitstat id="Rear" name="RA" value="0" /> 
     <unitstat id="Save" name="Save" value="2+/5(i)" /> 
     <unitstat id="Side" name="SA" value="0" /> 
     <unitstat id="St" name="St" value="4" /> 
     <unitstat id="To" name="To" value="4" /> 
     <unitstat id="WS" name="WS" value="4" /> 
     <unitstat id="Wo" name="Wo" value="1" /> 
     <unitstat id="iaAmmo" name="Ammo Load" value="0" /> 
     <unitstat id="iaCrew" name="Crew" value="-" /> 
     <unitstat id="iaMinRge" name="Min Rge" value="n/a" /> 
     <unitstat id="iaPowField" name="PowerField" value="-" /> 

我需要拉在,BS,在,LD,ST,要,WS的價值觀,禾和保存每個動態找到單位。我認爲唯一可行的辦法是鍵入:

foreach($squadSub->xpath('unitstat[@id="WS"]/@value') as $squadSubStat){ 
    $unitWs = $squadSubStat; 
} 

的價值觀的每一個和子組的每一個。是否有更簡單的方法從我需要的特定ID中獲取所有這些值?

我會假設我應該創建一個數組,然後通過它們調用?

如果您需要更多信息,請讓我知道!

回答

1

使用「或」運算符?

<?php 
$squadSub->xpath('unitstat[@id="WS" or @id="BS" or @id="whatever"]/@value'); 

編輯:
對不起,我誤會了。這是我的主張:

<?php 
$units = array(); 

foreach (array('WS', 'BS', 'Save') as $id) 
{ 
    if ($tmp = $squadSub->xpath("unitstat[@id='$id']")) 
     $units[$id] = (string)$tmp[0]['value']; 
} 

print_r($units); 
+0

非常不錯!專家就在那裏! 非常感謝! 20金! – ntgCleaner