获取特定XML节点值的最佳方法是什么?

时间:2016-02-04 15:15:15

标签: php xml

我有这个xml结构:

<?xml version="1.0" ?>
<log>
    <path>/dir/file</path>
    <name>log_</name>
</log>

这是我的功能:

function getNode($node)
{
    $dom = new DOMDocument();
    $dom->load('config.xml');

    $value = $dom->getElementsByTagName($node);

    foreach($value as $val)
    {
        $ints = $val->getElementsByTagName($node);
        $intVal = $ints->item(0)->nodeValue;

        echo $intVal;
    }
}

我如何获得path节点的值?我将节点作为参数传递,如path。但是代码没有进入foreach。我做错了什么?我正在等待/dir/file结果

3 个答案:

答案 0 :(得分:0)

我希望,这会有所帮助:

function getNode($node)
{
    $dom = new DOMDocument();
    $dom->load('config.xml');

    $value = $dom->getElementsByTagName($node);

    if ($value->length > 0) {
        $intVal = $value->item(0)->nodeValue;
        echo $intVal;
    }
}

解释非常简单 - 在detailed manual上提供了关于使用DOMDocument类的php.net

答案 1 :(得分:0)

您可以传递节点名称&#39;路径&#39;到函数getNode。函数getElementsByTagName将字符串作为参数,并返回DOMNodeList ,您可以使用foreach循环。

例如:

function getNode($node)
{
    $dom = new DOMDocument();
    $dom->load('config.xml');

    $value = $dom->getElementsByTagName($node);

    foreach($value as $val)
    {
        $path = $val->nodeValue;
        echo $path;
    }
}

getNode('path');

将导致:

  

/目录/文件

答案 2 :(得分:-3)

您可以改用SimpleXml simpleXml example - php.net