उदाहरण के लिए आप एक चर समाधानकर्ता परिभाषित कर सकते हैं और इस तरह के रूप में $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
से बदल दिया जाएगा।
अच्छा सवाल, मैंने कुछ उपयोगी खुद सीखा!
मैं सच चर उपयोग करने की संभावना की तुलना में, चर थोड़ा बोझिल की सरल इनलाइन किए जाने वाले हैं। इसके अलावा, आपको वाक्य रचनात्मक अखंडता के बारे में सोचना होगा (उदाहरण के लिए यदि 'myVar' में उद्धरण शामिल हैं? आदि) –