如何在xpath查询中指定要匹配的文本索引

时间:2014-03-13 09:27:09

标签: xpath xml-parsing

我有一个xml文件xml,我需要解析它。我想要做的是根据以前的输入获取标记脚本的最后位置。

我以前的输入将是标记脚本的第二个位置(比如 - networkSecurity,sdnSTC)

那么如何在xquery中指定要匹配的文本的索引。

我现在使用的代码是 -

   <?php

    $variable=$_POST['module']; 
    $xmldoc = new DOMDocument();
            $xmldoc->load('info.xml');

            $xpathvar = new Domxpath($xmldoc);

    $queryResult = $xpathvar->query("testcase[contains(script,'$variable')]"); 

            foreach($queryResult as $result)
            {
                    echo $result->textContent;
            }

    ?> 

这个$ queryResult如何指定$ variable的索引是2?

1 个答案:

答案 0 :(得分:0)

似乎在&#34;第二位置&#34;你的意思是script元素中路径的第三个组成部分。由于使用PHP,您只限于XPath 1.0,我认为简单地提取所有testcase元素并查看它们是否与PHP代码匹配(例如,使用explode)会更容易。但您也可以使用带有substring-after函数的XPath表达式:

testcase[
    substring-after(
        substring-after(script, '/'),
        '/'
    ) = '$variable' or
    substring-before(
        substring-after(
            substring-after(script, '/'),
            '/'
        ),
        '/'
    ) = '$variable'
]

另请注意,您似乎在XPath表达式中插入了未经检查的HTTP POST参数。这是一个类似于SQL注入的安全问题。