我正在使用html和php创建一个简单的Web应用程序,该应用程序读取用户在网页上提供的XML文件,然后在其上打印一些值内容。
文件通过POST发送到服务器,然后由php脚本读取。
这是我的xml测试文件的一个片段:
<cfdi:Impuestos totalImpuestosTrasladados="72.07">
<cfdi:Traslados>
<cfdi:Traslado importe="50.00" impuesto="IEPS" tasa="16.00"/>
<cfdi:Traslado importe="22.07" impuesto="IVA" tasa="16.00"/>
</cfdi:Traslados>
</cfdi:Impuestos>
这是我在php上制作的代码:
<?php
foreach ($_FILES['archivos']['name'] as $f => $name) {
$tempPath = $_FILES["archivos"]["tmp_name"][$f];
//Load xml file directly on the temp path
$xml = simplexml_load_file($tempPath, null, true);
$namespaces = $xml->getDocNamespaces();
//Creating and loading DOM object
$dom = new DOMDocument('1.0','utf-8');
$dom->load($tempPath);
//Getting IVAs' values
foreach ($xml->xpath('//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado') as $impuestos){
$IVA = $impuestos['importe'];
echo("IVA = ".$IVA."<br>");
}
}
?>
打印:
IVA = 50.00
IVA = 22.07
在这种情况下,我想只打印IVA的值,但它也需要IEPS的值,因为IEPS与IVA在同一条路径上。这些值仅在文件的这一部分上,我不知道是否有办法将它们分开。
我只想选择IVA的值。你能帮帮我吗?:(
完整的XML文件是:Here
答案 0 :(得分:1)
尝试:
foreach ($xml->xpath("//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado[@impuesto='IVA']") as $impuestos){