SimpleXML PHP 格式化
我正在尝试创建一个页面来显示 XML 文档中的特定信息。我遇到了一个障碍,我想找出最好的方法来做到这一点。
我的 XML 是一个由名为 Army Builder 的程序构建的大型列表。我正在尝试动态提取每个“小队”的具体信息。
现在,我的代码示例如下所示:
<?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="-" />
我需要为每个动态找到的单元提取 At、BS、In、Ld、St、To、Ws、Wo 和 Save 的值。我认为可能的唯一方法是输入以下内容:
foreach($squadSub->xpath('unitstat[@id="WS"]/@value') as $squadSubStat){
$unitWs = $squadSubStat;
}
对于每个值和每个子组。有没有更简单的方法可以从我需要的特定 ID 中获取所有这些值?
我认为我应该创建一个数组,然后通过它们调用?
如果您需要更多信息,请告诉我!
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.
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".
Right now, a sample of my code looks like this:
<?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>
The line that finds the "unitWS" is what I am asking about. Now, if you follow the entire xpath, it would read //squad/entity[@name='Nameoftheentity']/unitstat[@id="WS"]/@value
and that would give me the unit's WS. I need to pull 8-13 more values from the xml.
I will show you the /unitstat section of the XML:
<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="-" />
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:
foreach($squadSub->xpath('unitstat[@id="WS"]/@value') as $squadSubStat){
$unitWs = $squadSubStat;
}
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?
I would assume that I should create an array, then call through them?
Please let me know if you need more information!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
用“或”运算符?
编辑:
抱歉我误会了。这是我的建议:
With the "or" operator?
edit:
Sorry I misunderstood. Here is my proposition: