2017-12-30 57 views
1

私はhtmlとphpを使って簡単なWebアプリケーションを作成しています。このアプリケーションは、Webページ上でユーザーから提供されたXMLファイルを読み取り、その上にいくつかの値のコンテンツを表示します。phpを使用してxmlで特定の値を取得する方法は?

ファイルはPOSTによってサーバーに送信され、その後、PHPスクリプトによって読み取られます。

これは私のXMLテストファイルの断片である:印刷し

<?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を

<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で作られた私のコードです= 22.07

Print's screenshot

この場合、IVAの値だけを印刷したいのですが、IEPSはIVAと同じパスにあるので、IEPSの値も使用します。これらの値はファイルのこの部分にのみあり、それらを分離する方法があるかどうかはわかりません。

IVAの値だけを選択したいだけです。あなたは私を助けてくださいだろう:(

完全なXMLファイルには、次のとおりです。?Here

+0

がある場合に、 '$ impuestos [ 'impuesto']'の値を確認し – csabinho

+0

それ私が必要とするのは、その値がIVAに対応し、他のコンセプトには対応していないかどうかを確認することです。 –

+0

つまり、 'if($ impuestos ['impuesto'] ===" IVA ")'? – csabinho

答えて

1

試してみてください!

foreach ($xml->xpath("//cfdi:Comprobante//cfdi:Impuestos//cfdi:Traslados//cfdi:Traslado[@impuesto='IVA']") as $impuestos){ 
関連する問題