Note that there are some explanatory texts on larger screens.

plurals
  1. POSimpleXML PHP Formatting
    text
    copied!<p>I am trying to create a page which will show specific information from an XML document. I have run into a snag where I would like to find out the best possible way to do this. </p> <p>My XML is a large list that is built from a program called Army Builder. I am trying to dynamically pull specific information for each "squad". </p> <p>Right now, a sample of my code looks like this:</p> <pre><code>&lt;?PHP //THIS SECTION FINDS THE SQUAD/UNIT NAME OF THE FIRST ENTITY foreach($squad-&gt;xpath('entity') as $squadSub){ $squadSubName = stripslashes($squadSub['name']); $squadSubCount = $squadSub['count']; foreach($squadSub-&gt;xpath('unitstat[@id="WS"]/@value') as $squadSubStat){ $unitWs = $squadSubStat; } ?&gt; &lt;tr&gt; &lt;td&gt;&lt;?= $squadSubCount; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $squadSubName; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitWs; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitBs; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitSt; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitTo; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitWo; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitIn; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitAt; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitLd; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitaSv; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitiSv; ?&gt;&lt;/td&gt;&lt;td&gt;&lt;?= $unitcSv; ?&gt;&lt;/td&gt; &lt;/tr&gt; </code></pre> <p>The line that finds the "unitWS" is what I am asking about. Now, if you follow the entire xpath, it would read <code>//squad/entity[@name='Nameoftheentity']/unitstat[@id="WS"]/@value</code> and that would give me the unit's WS. I need to pull 8-13 more values from the xml. </p> <p>I will show you the /unitstat section of the XML:</p> <pre><code>&lt;unitstat id="iaStruPnt" name="Structure" value="-" /&gt; &lt;unitstat id="iaVdShld" name="Void Shld" value="-" /&gt; &lt;unitstat id="vdrAt" name="At" value="-" /&gt; &lt;unitstat id="vdrBS" name="BS" value="-" /&gt; &lt;unitstat id="vdrMass" name="Mass Point" value="-" /&gt; &lt;unitstat id="vdrSize" name="Size" value="Small" /&gt; &lt;unitstat id="vdrTpt" name="Transport" value="0" /&gt; &lt;unitstat id="vdrVehSv" name="Veh Save" value="-" /&gt; &lt;unitstat id="vdrWS" name="WS" value="-" /&gt; &lt;unitstat id="vdrWpnAP" name="AP" value="-" /&gt; &lt;unitstat id="vdrWpnRang" name="Range" value="-" /&gt; &lt;unitstat id="vdrWpnSh" name="Shots" value="-" /&gt; &lt;unitstat id="vdrWpnStr" name="S" value="0" /&gt; &lt;unitstat id="vdrWpnType" name="Type" value="0" /&gt; &lt;unitstat id="At" name="At" value="2/3" /&gt; &lt;unitstat id="BS" name="BS" value="4" /&gt; &lt;unitstat id="Fam" name="Familiar" value="0" /&gt; &lt;unitstat id="Front" name="FA" value="0" /&gt; &lt;unitstat id="Group" name="Grp" value="" /&gt; &lt;unitstat id="In" name="In" value="4" /&gt; &lt;unitstat id="Ld" name="Ld" value="10" /&gt; &lt;unitstat id="Rear" name="RA" value="0" /&gt; &lt;unitstat id="Save" name="Save" value="2+/5(i)" /&gt; &lt;unitstat id="Side" name="SA" value="0" /&gt; &lt;unitstat id="St" name="St" value="4" /&gt; &lt;unitstat id="To" name="To" value="4" /&gt; &lt;unitstat id="WS" name="WS" value="4" /&gt; &lt;unitstat id="Wo" name="Wo" value="1" /&gt; &lt;unitstat id="iaAmmo" name="Ammo Load" value="0" /&gt; &lt;unitstat id="iaCrew" name="Crew" value="-" /&gt; &lt;unitstat id="iaMinRge" name="Min Rge" value="n/a" /&gt; &lt;unitstat id="iaPowField" name="PowerField" value="-" /&gt; </code></pre> <p>I need to pull the VALUES of At, BS, In, Ld, St, To, Ws , Wo and Save for each dynamically found unit. The only way I see it possible is to type this:</p> <pre><code>foreach($squadSub-&gt;xpath('unitstat[@id="WS"]/@value') as $squadSubStat){ $unitWs = $squadSubStat; } </code></pre> <p>for every one of the values and for every one of the sub groups. Is there an easier way to get all of those values from the specific ID's that I need?</p> <p>I would assume that I should create an array, then call through them?</p> <p>Please let me know if you need more information!</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload