【问题标题】:PHP SimpleXML XPath QueryPHP SimpleXML XPath 查询
【发布时间】:2014-01-21 02:01:46
【问题描述】:

我有一个函数正在尝试使用 XPath 查询从 XML 获取文本。函数内容如下:

function getInterviewText($id)  {
    $sxe = simplexml_load_file("./interview2.xml");
    foreach($sxe->xpath('//interview') as $item) {
        $row = simplexml_load_string($item->asXML());
        $v = $row->xpath('//interview-id[.="$id"]');
        if($v[0]) {
            echo '<interview-text>'.$item->INTERVIEW-TEXT.'</interview-text>' 
        }
    }
}

XML 文件内容如下:

<?xml version="1.0"?>
<ROOT>
    <interview>
        <interview-id>1</interview-id>
        <INTERVIEW-TEXT>                                
            Test1
        </INTERVIEW-TEXT>
    </interview>
    <interview>
        <interview-id>2</interview-id>
        <INTERVIEW-TEXT>                              
            Test2          
        </INTERVIEW-TEXT>
    </interview>
</ROOT>

但是,当我尝试使用 id=1 或 2 调用它时,该函数没有返回任何内容。非常感谢任何帮助。

谢谢

【问题讨论】:

    标签: php xml xpath


    【解决方案1】:

    问题出在这里:

    $v = $row->xpath('//interview-id[.="$id"]');
    

    $id 没有被扩展,因为您位于单引号字符串中。请尝试以下方法之一:

    $v = $row->xpath('//interview-id[.="' . $id . '"]');
    // Or
    $v = $row->xpath("//interview-id[.=\"{$id}\"]");
    

    【讨论】:

    • 非常感谢 Starson!
    • 但如果 $id 是用户输入的值,请注意代码注入攻击。
    猜你喜欢
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多