Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.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_Xpath - Fatal编程技术网

Php 回显数组的XML元素值和属性值

Php 回显数组的XML元素值和属性值,php,xml,xpath,Php,Xml,Xpath,考虑以下XML文档: <?xml version="1.0" encoding="UTF-8"?> <catalog> <product code="WERGTR"> </product> <product code="HERGGFH"> </product> <product code="NYTERBT"> </product> <pro

考虑以下XML文档:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <product code="WERGTR">
    </product>
    <product code="HERGGFH">
    </product>
    <product code="NYTERBT">
    </product>
    <product code="NUYRTHT">
    </product>
    <misc>
        <copyrightHTML>Somo stuff</copyrightHTML>
        <categoryLink name="Attr1">http://www.example.com/val1</categoryLink>
        <categoryLink name="Attr2">http://www.example.com/val2</categoryLink>
        <categoryLink name="Attr3">http://www.example.com/val3</categoryLink>
        <categoryLink name="Attr4">http://www.example.com/val4</categoryLink>
    </misc>
</catalog>
但它不起作用,它根本没有显示任何东西

我正在寻找的结果可能如下:

$key . ": value: " . $value . ", name: " . $nameValue
所以

我想到了如何:

1.-获取每个
元素的
name
属性值:

foreach($xml->xpath('//misc/categoryLink/@name') as $nameAttr) {
    echo $nameAttr . "<br>"; 
}
foreach($xml->xpath('//misc/categoryLink') as $linkVal) {
    echo $linkVal . "<br>"; 
}
foreach($xml->xpath('//misc/categoryLink/@name')作为$nameAttr){
echo$nameAttr.“
”; }
2.-获取每个
元素的值:

foreach($xml->xpath('//misc/categoryLink/@name') as $nameAttr) {
    echo $nameAttr . "<br>"; 
}
foreach($xml->xpath('//misc/categoryLink') as $linkVal) {
    echo $linkVal . "<br>"; 
}
foreach($xml->xpath('//misc/categoryLink')作为$linkVal){
echo$linkVal.“
”; }

缺点是我还没有弄清楚如何在每行中同时输出这两个值。

实际上,输出是:

<br><br><br><br>Attr1<br>
或者使用Xpath:

foreach($xml->xpath('misc/categoryLink') as $link) { 
    echo $link['name'], ', ', $link;
    echo "\n"; 
}

SimpleXMLElement对象的行为因其使用方式而异,您可以使用相同的名称在多个节点上迭代,访问列表的第一个节点,或将其转换为字符串以获取文本内容。

谢谢你,伙计。我的代码/答案有一些问题,决定试试你的。工作得很好。
foreach($xml->xpath('misc/categoryLink') as $link) { 
    echo $link['name'], ', ', $link;
    echo "\n"; 
}