获取特定 XML 节点值的最佳方法


Best way to get specific XML node value?

我有这个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结果

您可以将节点名称"path"传递给函数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');

将导致:

/

目录/文件

我希望这会有所帮助:

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;
    }
}

解释非常简单 - php.net 上提供了有关使用 DOMDocument 类的详细手册。

你可以改用 SimpleXml 来代替。
简单 XML 示例 - php.net