Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用php获取xml上的特定值?_Php_Xml - Fatal编程技术网

如何使用php获取xml上的特定值?

如何使用php获取xml上的特定值?,php,xml,Php,Xml,我正在使用html和php创建一个简单的web应用程序,该应用程序读取用户在网页上提供的XML文件,然后在其上打印一些值和内容 文件通过POST发送到服务器,然后由php脚本读取 这是我的xml测试文件的一个片段: <cfdi:Impuestos totalImpuestosTrasladados="72.07"> <cfdi:Traslados> <cfdi:Traslado importe="50.00" impuesto="IEPS"

我正在使用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>");
}
}
?>
getdocnamespace();
//创建和加载DOM对象
$dom=新的DOMDocument('1.0','utf-8');
$dom->load($tempPath);
//获取IVAs的价值观
foreach($xml->xpath('//cfdi:Comprobante//cfdi:imputestos//cfdi:Traslados//cfdi:Traslado')作为$imputestos){
$IVA=$impuestos['importe'];
echo(“IVA=“.IVA.”
”; } } ?>
上面印着:

IVA=50.00
IVA=22.07

在这种情况下,我只想打印IVA的值,但它也接受IEPS的值,因为IEPS与IVA位于同一路径上。这些值仅在文件的这一部分,我不知道是否有办法将它们分开

我只想选择IVA的值。你能帮帮我吗(

完整的XML文件是:

请尝试:

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

用if检查
$imputestos['imputesto']
的值!它只在特定情况下有效,我需要检查该值是否对应于IVA而不是其他概念。换句话说
if($imputestos['imputesto']==“IVA”)
?真是个傻瓜,你说得对。这是我第一次使用php,我道歉。谢谢!。