gpt4 book ai didi

java - 从 Java 发送 XPath 变量

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:59 24 4
gpt4 key购买 nike

我有一个搜索静态值的 XPath 表达式。在此示例中,“test”是该值:

XPathExpression expr = xpath.compile("//doc[contains(., 'test')]/*/text()");

如何传递变量而不是固定字符串?我在 Eclipse 中使用 Java。有没有办法使用 Java String 的值来声明 XPath 变量?

最佳答案

您可以定义一个变量解析器,并对表达式求值解析变量,例如$myvar,例如:

XPathExpression expr = xpath.compile("//doc[contains(., $myVar)]/*/text()");

有一个很好的解释here .我自己之前实际上并没有这样做过,所以我可能会尝试并提供一个更完整的示例。


更新:

试一试,大有作为。作为一个非常简单的实现示例,您可以定义一个类,该类返回映射中给定变量的值,如下所示:

class MapVariableResolver implements XPathVariableResolver {
// local store of variable name -> variable value mappings
Map<String, String> variableMappings = new HashMap<String, String>();

// a way of setting new variable mappings
public void setVariable(String key, String value) {
variableMappings.put(key, value);
}

// override this method in XPathVariableResolver to
// be used during evaluation of the XPath expression
@Override
public Object resolveVariable(QName varName) {
// if using namespaces, there's more to do here
String key = varName.getLocalPart();
return variableMappings.get(key);
}
}

现在,例如在程序中声明并初始化这个解析器的一个实例

MapVariableResolver vr = new MapVariableResolver() ;
vr.setVariable("myVar", "text");
...
XPath xpath = factory.newXPath();
xpath.setXPathVariableResolver(vr);

然后,在计算 XPath 表达式 XPathExpression expr = xpath.compile("//doc[contains(., $myVar)]/*/text()"); 时,变量$myVar 将替换为字符串 text

好问题,我自己学到了一些有用的东西!

关于java - 从 Java 发送 XPath 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3170887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com