Group values based on xml tags

Hartz6

New Member
I have a xml file which have tags like.\[code\]<ENVELOPE> <A>Hi </A> <A1> <A12>groupA</A12> <A13></A13> </A1> <B> <A>xxx</A> </B> <C> <A11>100</A11> <A13></A13> </C> <B> <A>yyy</A> </B> <C> <A11>1000</A11> <A13></A13> </C> <B> <A>zzz</A> </B> <C> <A11>100</A11> <A13></A13> </C> <A>Hello</A> <A1> <A12>groupC</A12> <A13></A13> </A1> <B> <A>rrr</A> </B> <C> <A11>10000</A11> <A13></A13> </C></ENVELOPE>\[/code\]I want to store these data in below format\[code\]Col Header A A1 B C-A11 Hi groupA xxx 100 Hi groupA yyy 1000 Hi groupA zzz 100 Hello groupB rrr 10000 \[/code\]Tried source code:\[code\] DocumentBuilderFactory domFactory = DocumentBuilderFactory.newInstance(); domFactory.setNamespaceAware(true); DocumentBuilder builder = domFactory.newDocumentBuilder(); Document doc = builder.parse("Response.xml"); XPath xpath = XPathFactory.newInstance().newXPath(); // XPath Query for showing all nodes value ArrayList names = new ArrayList(); XPathExpression expr1 = xpath.compile("//A/text()"); Object res = expr1.evaluate(doc, XPathConstants.NODESET); NodeList nod = (NodeList) res; for (int i = 0; i < nod.getLength(); i++) { System.out.print(i+":"); System.out.println(nod.item(i).getNodeValue()); if(!names.contains(nod.item(i).getTextContent().trim())) names.add(nod.item(i).getTextContent().trim()); } NodeList nodeLst = doc.getElementsByTagName("C"); int coun = nodeLst.getLength(); String val[][] = new String[coun][2]; for (int s = 0; s < nodeLst.getLength(); s++) { Node secNode = nodeLst.item(s); if (secNode.getNodeType() == Node.ELEMENT_NODE) { try { Element amtval = (Element) secNode; NodeList secval = amtval.getElementsByTagName("A11"); val[0] = secval.item(0).getTextContent(); System.out.println("A11 :" + val[0]); NodeList lstNmElmntLst = amtval.getElementsByTagName("A13"); val[1] = lstNmElmntLst.item(0).getTextContent(); System.out.println("A13 : " +val[1]); } catch(Exception ex){ ex.printStackTrace(); } } } NodeList plamt = doc.getElementsByTagName("A1"); int count = plamt.getLength(); String val1[][] = new String[count][2]; for (int s = 0; s < plamt.getLength(); s++) { Node secNode = plamt.item(s); //if (secNode.getNodeType() == Node.ELEMENT_NODE) { try { Element amtval = (Element) secNode; NodeList secval = amtval.getElementsByTagName("A12"); val1[0] = secval.item(0).getTextContent(); System.out.println("A12 :" + val1[0]); NodeList lstNmElmntLst = amtval.getElementsByTagName("A13"); val1[1] = lstNmElmntLst.item(0).getTextContent(); System.out.println("A13: " +val1[1]); } catch(Exception ex){ ex.getMessage(); } }\[/code\]I got below output\[code\]Hi 100 100xxx 100 100yyy 100 100zzz 100 100Hello groupA groupBrrr groupC groupD\[/code\][*]How can get as mentioned format.[*]Is there any references available for grouping?[*]Please provide any logic to do thisHelp me.Thanks in advance,Dhina P.
 
Back
Top