我有一个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?
答案 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注入的安全问题。