Hi all,I have a UDF in Java that does some XML processing. My parser works fine. I am now adding some code to this UDF that uses XPath. However, my XPath expression always returns null. I wrote another standalone program that has the same path expression and same document as its input, I get correct results. However, my Pig UDF with same XPath expression and same i/p it retunes a null result. Please find relevant code snippet attached. Has anyone used XPath in UDFs. Also I saw mention of XPath with PiggyBan, but my 0.11 code does not have that in its contrib area. Does anyone has any experience with using that? public parseXml (String xmlRecords){/* I have a sequence file so xmlRecords isn basically the xml file to parse */ DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); db = DocumentBuilderFactory.newInstance().newDocumentBuilder();InputSource is = new InputSource();is.setCharacterStream(new StringReader(xmlRecords));doc = db.parse(is); // other codeā¦. } public String tokenIdToStringXPath (String tokenidstr) { String querystr = "//lang:Token[@xml:id='" + tokenidstr + "']"; Element tokenelem = null; String resultingtokenstr = "Sameer"; StringBuilder resultstr = new StringBuilder(); try {
XPathExpression expr = xPath.compile(querystr); Object result = expr.evaluate(doc, XPathConstants.NODESET); NodeList nodes = (NodeList) result; resultstr.append("Querystr: " + querystr); resultstr.append(" ::Nodes: " + nodes.getLength()); } The XPath expression after evaluation never //lang:Token[@xml:id='639'] ::Nodes: 0