<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Question Re: Using XPath in Java Mapping in Technology Q&amp;A</title>
    <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685841#M4369072</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Guys for all your help in resolving this issue. I have tried using below code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;exp= "/MT_Source_JM/Record/Employee/role";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; String xmlstring=xpath.compile(exp).evaluate(doc);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; NodeList list=(NodeList)xpath.compile(exp).evaluate(doc,XPathConstants.NODESET);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(int i=0;i&amp;lt;list.getLength();i++)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; System.out.println("Xpath Values["+i+"]="+list.item(i).getFirstChild().getNodeValue());&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is working fine for list. Can you also suggest me if I can XPathConstants.NODE for a single node value?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Shankul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 16 May 2016 10:37:28 GMT</pubDate>
    <dc:creator>shankul_saxena</dc:creator>
    <dc:date>2016-05-16T10:37:28Z</dc:date>
    <item>
      <title>Using XPath in Java Mapping</title>
      <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaq-p/11685837</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Guys,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am using XPath in my Java Mapping and unfortunately not getting out from the node. Please find piece of code below using which I am extracting Value from node.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();&lt;/P&gt;&lt;P&gt;&amp;nbsp; DocumentBuilder db=factory.newDocumentBuilder();&lt;/P&gt;&lt;P&gt;&amp;nbsp; XPathFactory xfactory=XPathFactory.newInstance();&lt;/P&gt;&lt;P&gt;&amp;nbsp; XPath xpath=xfactory.newXPath();&lt;/P&gt;&lt;P&gt;&amp;nbsp; String exp=null;&lt;/P&gt;&lt;P&gt;&amp;nbsp; InputSource is=new InputSource();&lt;/P&gt;&lt;P&gt;&amp;nbsp; NodeList nl=null;&lt;/P&gt;&lt;P&gt;&amp;nbsp; Node node=null;&lt;/P&gt;&lt;P&gt;&amp;nbsp; ByteArrayInputStream bis = new ByteArrayInputStream(xml.getBytes());&lt;/P&gt;&lt;P&gt;&amp;nbsp; Document doc=db.parse(bis);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; exp= "/ns0:MT_Source_JM/Record//Employee[2]/text()";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; node=(Node)xpath.evaluate(exp,doc,XPathConstants.NODESET);&lt;/P&gt;&lt;P&gt;&amp;nbsp; System.out.println("XPath Value=["+node.getNodeName()+"]");&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&amp;nbsp; catch(Exception e)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; e.printStackTrace();&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My XML is below&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;&amp;lt;ns0:MT_Source_JM xmlns:ns0="&lt;/SPAN&gt;&lt;A class="jive-link-external-small" href="http://aa.com/test"&gt;http://aa.com/test&lt;/A&gt;&lt;SPAN&gt;"&amp;gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;lt;Record&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;Employee id="1"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;age&amp;gt;29&amp;lt;/age&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;name&amp;gt;Pankaj&amp;lt;/name&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;gender&amp;gt;male&amp;lt;/gender&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;role&amp;gt;Java Developer&amp;lt;/role&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/Employee&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;Employee id="2"&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;age&amp;gt;35&amp;lt;/age&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;name&amp;gt;Lisa&amp;lt;/name&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;gender&amp;gt;male&amp;lt;/gender&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;role&amp;gt;CEO&amp;lt;/role&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/Employee&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/Record&amp;gt;&lt;/P&gt;&lt;P&gt;&amp;lt;/ns0:MT_Source_JM&amp;gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I need your help in executing this java code through which I can access node value through Xpath or help me with links where I can find help.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Shankul &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 May 2016 14:43:56 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaq-p/11685837</guid>
      <dc:creator>shankul_saxena</dc:creator>
      <dc:date>2016-05-14T14:43:56Z</dc:date>
    </item>
    <item>
      <title>Re: Using XPath in Java Mapping</title>
      <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685838#M4369069</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shankul,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Check: &lt;A href="http://viralpatel.net/blogs/java-xml-xpath-tutorial-parse-xml/" title="http://viralpatel.net/blogs/java-xml-xpath-tutorial-parse-xml/"&gt;http://viralpatel.net/blogs/java-xml-xpath-tutorial-parse-xml/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Nabendu.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 May 2016 15:59:53 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685838#M4369069</guid>
      <dc:creator>nabendu_sen</dc:creator>
      <dc:date>2016-05-14T15:59:53Z</dc:date>
    </item>
    <item>
      <title>Re: Using XPath in Java Mapping</title>
      <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685839#M4369070</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shankul,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Which node's text would you like to access in particular? Node "Employee" is not a text node, so attempt to access its text will return no result.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Few comments regarding source code you use:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;XPath expression&lt;/LI&gt;&lt;/UL&gt;&lt;PRE&gt;&lt;CODE&gt;
&lt;P&gt;exp= "/ns0:MT_Source_JM/Record//Employee[2]/text()";&lt;/P&gt;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Don't use namespace prefix, you can omit it here. As already mentioned above, making node test for a text against a node that is not a text node, will not yield result. So please also specify a text node, which value you need to extract - for example, if you need to retrieve's the second employee's name, then an expression will be &lt;STRONG&gt;/MT_Source_JM/Record/Employee[2]/name/text()&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;XPath evaluation return type&lt;/LI&gt;&lt;/UL&gt;&lt;PRE&gt;&lt;CODE&gt;
&lt;P&gt;node=(Node)xpath.evaluate(exp,doc,XPathConstants.NODESET);&lt;/P&gt;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;There is a mismatch between return type (Nodeset) and casted type (Node). If an XPath expression retrieves only a single node, then instead of &lt;STRONG&gt;XPathConstants.NODESET&lt;/STRONG&gt;, make use of &lt;STRONG&gt;XPathConstants.NODE&lt;/STRONG&gt;.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI&gt;Access to node's text&lt;/LI&gt;&lt;/UL&gt;&lt;PRE&gt;&lt;CODE&gt;
&lt;P&gt;System.out.println("XPath Value=["+node.getNodeName()+"]");&lt;/P&gt;

&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;Here, instead of &lt;STRONG&gt;getNodeName()&lt;/STRONG&gt;, &lt;STRONG&gt;getNodeValue()&lt;/STRONG&gt; shall be used when accessing node's text value.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vadim&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 14 May 2016 17:41:09 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685839#M4369070</guid>
      <dc:creator>vadimklimov</dc:creator>
      <dc:date>2016-05-14T17:41:09Z</dc:date>
    </item>
    <item>
      <title>Re: Using XPath in Java Mapping</title>
      <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685840#M4369071</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Vadim.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have tried using your way but it was giving error&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 May 2016 10:34:06 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685840#M4369071</guid>
      <dc:creator>shankul_saxena</dc:creator>
      <dc:date>2016-05-16T10:34:06Z</dc:date>
    </item>
    <item>
      <title>Re: Using XPath in Java Mapping</title>
      <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685841#M4369072</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Guys for all your help in resolving this issue. I have tried using below code&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;exp= "/MT_Source_JM/Record/Employee/role";&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; String xmlstring=xpath.compile(exp).evaluate(doc);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; NodeList list=(NodeList)xpath.compile(exp).evaluate(doc,XPathConstants.NODESET);&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; for(int i=0;i&amp;lt;list.getLength();i++)&lt;/P&gt;&lt;P&gt;&amp;nbsp; {&lt;/P&gt;&lt;P&gt;&amp;nbsp; System.out.println("Xpath Values["+i+"]="+list.item(i).getFirstChild().getNodeValue());&lt;/P&gt;&lt;P&gt;&amp;nbsp; }&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It is working fine for list. Can you also suggest me if I can XPathConstants.NODE for a single node value?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Shankul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 May 2016 10:37:28 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685841#M4369072</guid>
      <dc:creator>shankul_saxena</dc:creator>
      <dc:date>2016-05-16T10:37:28Z</dc:date>
    </item>
    <item>
      <title>Re: Using XPath in Java Mapping</title>
      <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685842#M4369073</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Shankul,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here is a small standalone program I used to verify XPath result for your example (source_msg.xml is the file to which I pasted XML content provided in your original post):&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;
&lt;P&gt;import java.io.File;&lt;/P&gt;
&lt;P&gt;import java.io.IOException;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;import javax.xml.parsers.DocumentBuilder;&lt;/P&gt;
&lt;P&gt;import javax.xml.parsers.DocumentBuilderFactory;&lt;/P&gt;
&lt;P&gt;import javax.xml.parsers.ParserConfigurationException;&lt;/P&gt;
&lt;P&gt;import javax.xml.xpath.XPathConstants;&lt;/P&gt;
&lt;P&gt;import javax.xml.xpath.XPathExpression;&lt;/P&gt;
&lt;P&gt;import javax.xml.xpath.XPathExpressionException;&lt;/P&gt;
&lt;P&gt;import javax.xml.xpath.XPathFactory;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;import org.w3c.dom.Document;&lt;/P&gt;
&lt;P&gt;import org.w3c.dom.Node;&lt;/P&gt;
&lt;P&gt;import org.xml.sax.SAXException;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;public class XPathChecker {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; public static void main(String[] args)&lt;/P&gt;
&lt;P&gt;&amp;nbsp; throws SAXException, IOException, ParserConfigurationException, XPathExpressionException {&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; File srcFile = new File("source_msg.xml");&lt;/P&gt;
&lt;P&gt;&amp;nbsp; String xPathValue = "/MT_Source_JM/Record/Employee[2]/name/text()";&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; DocumentBuilder docBuilder = docFactory.newDocumentBuilder();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Document doc = docBuilder.parse(srcFile);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; XPathFactory xPathFactory = XPathFactory.newInstance();&lt;/P&gt;
&lt;P&gt;&amp;nbsp; XPathExpression xPathExpression = xPathFactory.newXPath().compile(xPathValue);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; Node nodeEmployeeNameText = (Node) xPathExpression.evaluate(doc, XPathConstants.NODE);&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; System.out.println(nodeEmployeeNameText.getNodeValue());&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; }&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;And this is a result of its execution for me:&lt;/P&gt;&lt;P&gt;&lt;IMG class="migrated-image" src="https://community.sap.com/legacyfs/online/storage/attachments/storage/7/jiveimages/952758" width="450" /&gt;&lt;/P&gt;&lt;P&gt;Can you please provide details about error you get?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Vadim&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 May 2016 10:41:48 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685842#M4369073</guid>
      <dc:creator>vadimklimov</dc:creator>
      <dc:date>2016-05-16T10:41:48Z</dc:date>
    </item>
    <item>
      <title>Re: Using XPath in Java Mapping</title>
      <link>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685843#M4369074</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Vadim for all your help. Your code helped me a lot.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;With best regards,&lt;/P&gt;&lt;P&gt;Shankul&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 16 May 2016 11:04:40 GMT</pubDate>
      <guid>https://community.sap.com/t5/technology-q-a/using-xpath-in-java-mapping/qaa-p/11685843#M4369074</guid>
      <dc:creator>shankul_saxena</dc:creator>
      <dc:date>2016-05-16T11:04:40Z</dc:date>
    </item>
  </channel>
</rss>

