Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.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 产品和产品名称空间破坏了我的xpath_Php_Xml_Xpath_Namespaces - Fatal编程技术网

Php 产品和产品名称空间破坏了我的xpath

Php 产品和产品名称空间破坏了我的xpath,php,xml,xpath,namespaces,Php,Xml,Xpath,Namespaces,我试图在xml表中找到一些数据 如果删除的名称空间如下所示,我可以从xml中获取数据: $nodes = $data->xpath('//Products/Product/productId[.='.$sku.']/parent::*'); 但是,当我加载真正的xml时,它的格式如下所示:产品的名称空间和产品的名称空间 xml: } 但到目前为止还不起作用。我走的方向对吗 但是您正在注册两个名称空间prodfeed和prod,但是在xpath中您只使用了“prodfeed” 如果

我试图在xml表中找到一些数据

如果删除的名称空间如下所示,我可以从xml中获取数据:

    $nodes = $data->xpath('//Products/Product/productId[.='.$sku.']/parent::*');
但是,当我加载真正的xml时,它的格式如下所示:产品的名称空间和产品的名称空间

xml:

}

但到目前为止还不起作用。我走的方向对吗


但是

您正在注册两个名称空间
prodfeed
prod
,但是在xpath中您只使用了“prodfeed”

如果您可以更改这一行,可能会有所帮助:

$nodes = $xml->xpath('/prodfeed:Products/prodfeed:Product/prod:productId[.='.$sku.']/parent::*');
为此:

$nodes = $xml->xpath('/prodfeed:Products/prod:Product/prod:productId[.=' . $sku . ']/parent::*');

您正在注册两个名称空间
prodfeed
prod
,但在xpath中只使用“prodfeed”

如果您可以更改这一行,可能会有所帮助:

$nodes = $xml->xpath('/prodfeed:Products/prodfeed:Product/prod:productId[.='.$sku.']/parent::*');
为此:

$nodes = $xml->xpath('/prodfeed:Products/prod:Product/prod:productId[.=' . $sku . ']/parent::*');

XML文档在到达Product元素时会更改默认名称空间,因此此时您需要开始使用prod名称空间,而不是prodfeed名称空间

您还可以通过将开头“[”移回productId之前来简化查询,这意味着您不必执行父项::*位

$nodes = $xml->xpath('/prodfeed:Products/prod:Product[prod:productId=' . $sku . ']');

XML文档在到达Product元素时会更改默认名称空间,因此此时您需要开始使用prod名称空间,而不是prodfeed名称空间

您还可以通过将开头“[”移回productId之前来简化查询,这意味着您不必执行父项::*位

$nodes = $xml->xpath('/prodfeed:Products/prod:Product[prod:productId=' . $sku . ']');