我的XML文件如下所示:
<Charge ID="01010101">
<Type>SHIPPING</Type>
<Description>Shipping</Description>
<Amount>8.9500</Amount>
</Charge>
<Charge ID="10101010">
<Type>TAX</Type>
<Description>Sales Tax</Description>
<Amount>0.0000</Amount>
</Charge>我可以用这个做一个数组
$getcharge = $doc->getElementsByTagName("Charge");
$array = array();
foreach ($getcharge as $node) {
$array[] = $node;
}使用print_r,我可以看到nodeValue是这样构造的
[nodeValue] =>
SHIPPING
Shipping
8.9500按照同样的思路,我可以使用以下方法从这些nodeValues生成一个数组
foreach ($doc->getElementsByTagName("Charge") as $values) { {
$result[] = $values->nodeValue;
}
}输出是
Array
(
[0] =>
SHIPPING
Shipping
8.9500
[1] =>
TAX
Sales Tax
0.0000
)这些子节点使我感到困惑,因为它们不在单个nodeValue中,如数组中所示。事实上,它们都是一个nodeValue。
我所要做的就是在Charge上循环,并将<Type></Type>和<Amount></Amount>放入变量中。
如何在具有多个属性的Type和Amount中获得nodeValue的单个实例?
发布于 2017-04-12 02:37:49
要获得这些费用中的类型、数量、描述批次,您可以使用$values作为上下文,也可以再次使用->getElementsByTagName方法。示例:
foreach ($doc->getElementsByTagName("Charge") as $values) {
// $values as each `Charge`
$result[] = array(
'id' => $values->getAttribute('ID'),
'type' => $values->getElementsByTagName('Type')->item(0)->nodeValue,
'description' => $values->getElementsByTagName('Description')->item(0)->nodeValue,
'amount' => $values->getElementsByTagName('Amount')->item(0)->nodeValue,
);
}https://stackoverflow.com/questions/43359136
复制相似问题