7
में सैक्सन Xpath इंजन यहाँ मेरी कोड है:का उपयोग जावा
public static void main(String[] args) {
// System.setProperty(
// "javax.xml.xpath.XPathFactory",
// "net.sf.saxon.xpath.XPathFactoryImpl");
String xml="<root><a>#BBB#</a><a>#CCC#</a><b><a>#DDD#</a></b></root>";
try{
JDocument dom = new JDocument(xml);
XPathFactory factory = net.sf.saxon.xpath.XPathFactoryImpl.newInstance();
XPath xpath = factory.newXPath();
XPathExpression expr = xpath.compile("//a[matches(.,'#...#')]");
Object result = expr.evaluate(dom, XPathConstants.NODESET);
NodeList nodes = (NodeList) result;
Nodes sharped = new Nodes(nodes);
for (Node n:sharped){
System.out.println(n.toString());
}
}
catch(Exception e){
e.printStackTrace();
}
}
और मैं इस मिल:
javax.xml.transform.TransformerException: Impossible to find the function : matches
at org.apache.xpath.compiler.XPathParser.error(XPathParser.java:608)
at org.apache.xpath.compiler.XPathParser.FunctionCall(XPathParser.java:1505)
at org.apache.xpath.compiler.XPathParser.PrimaryExpr(XPathParser.java:1444)
at org.apache.xpath.compiler.XPathParser.FilterExpr(XPathParser.java:1343)
at org.apache.xpath.compiler.XPathParser.PathExpr(XPathParser.java:1276)
जावा org.apache.xpath.compiler.XPathParser
वर्ग उपयोग कर रहा है जब मैं स्पष्ट रूप से net.sf.saxon.xpath.XPathFactoryImpl
के माध्यम से अपने कारखाने बनाई जिसका मतलब है।
(मुझे वास्तव में केवल मेरे xpaths में कुछ matches
डालना होगा ... इसलिए यदि सैक्सन से जुड़े किसी भी समाधान को ज्ञात नहीं है, तो मेरी आवश्यकता पर विचार करें)।
मैं क्या गलत कर रहा हूं?
यदि आप जार फ़ाइलों के बारे में उलझन में हैं, तो आपको इसे काम करने के लिए अपनी निर्भरताओं पर सैक्सन कोर और सैक्सन गुंबद जोड़ने की आवश्यकता है, या आपको क्लास कॉम के नोड्स के लिए ऑब्जेक्ट मॉडल कार्यान्वयन का पता नहीं लगाया जा सकता है। sun.org.apache.xerces.internal.dom.DeferredDocumentImpl "अपवाद – Arash
मैं विपरीत कैसे कर सकता हूं, यानी इसे JVM (सैक्सन के बजाय) में डिफ़ॉल्ट XPathFactory का उपयोग करने के लिए मजबूर करता हूं? –
कोई जेम्स नहीं, क्योंकि हम चाहते हैं यहां 'मैचों' जैसे XPath 2.0 फ़ंक्शंस का उपयोग करें। – Donatello