我的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>
变为变量。
如何在具有多个属性的nodeValue中获取Type
和Amount
的单个实例?
答案 0 :(得分:1)
要获得每项费用中的这些类型,金额,描述的批量,您已经可以使用$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,
);
}