title: SAXParser to parse XML data from CLOB in Java-Hibernate
body: <p>I'm working on a web application that uses Spring MVC and Hibernate,</p>
  
  <p>I want to parse a XML data from CLOB and print it,
  I was follow this tutorial <a href="http://thinktibits.blogspot.com/2013/01/read-xmltype-as-clob-java-jdbc-example.html" rel="nofollow">thinktibits</a> and <a href="http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/" rel="nofollow">mkyong</a> but I got stuck from this point,
  I can't print the xml element that I want,</p>
  
  <p>this is my code,</p>
  
  <pre><code>@RequestMapping(value="/admin/Detail-BPJS-TK.html")
  public ModelAndView listDetailBPJSTK(ModelMap model, HttpServletRequest request, HttpServletResponse response)throws ParserConfigurationException, SAXException, Exception{
      if(!((request.getParameter("MESSAGEID")) == null)){
          String MESSAGEID = request.getParameter("MESSAGEID");
          System.out.println(MESSAGEID);
          //140721438362
          //DetailBPJS detailbpjs = detailbpjsService.get(MESSAGEID);
  
          //String tes = detailbpjs.getMESSAGEID();
          //System.out.println(tes);
  
          Configuration cfg = new Configuration();
          cfg.configure("hibernatesoaappbpjstk.cfg.xml");
  
          SessionFactory factory = cfg.buildSessionFactory();
          Session session = factory.openSession();
  
          String pay = "PAYMENT";
          String sub = "PROCESSED";
  
          Query query = session.createQuery("from DetailBPJS where TRANSACTION = :tra and SUBTRANSACTION = :sub and MESSAGEID = :mes");
          query.setParameter("tra", pay);
          query.setParameter("sub", sub);
          query.setParameter("mes", MESSAGEID);
  
          @SuppressWarnings("unchecked")
          List &lt;DetailBPJS&gt; result = query.list();
  
          if(result.isEmpty()){
              System.out.println("Please, check the 'No. Billing' again!!");
              System.out.println(MESSAGEID);
              model.addAttribute("errorMessageBPJSTK", "true");
          }else{
              DetailBPJS data = (DetailBPJS)result.get(0);
              String nom1 = data.getTRANSACTION();
              String nom2 = data.getSUBTRANSACTION();
              String nom3 = data.getUUID();
              Clob nom4 = data.getRAWDATA();
  
              System.out.println(nom1 + " - " + nom2 + " - " + nom3 + " - " + nom4);
              //140721438362
  
              //convert clob to java.io.reader
              Reader myclob = nom4.getCharacterStream();
  
              //create InputSource from Reader
              InputSource myinput = new InputSource(myclob);
  
              try {
  
                  SAXParserFactory factoryz = SAXParserFactory.newInstance();
                  SAXParser saxParser = factoryz.newSAXParser();
  
                  DefaultHandler handler = new DefaultHandler(){
                      boolean b_krb   = false;
                      boolean b_reqid = false;
                      boolean b_ch    = false;
                      boolean b_kb    = false;
                      boolean b_tgl   = false;
                      boolean tot     = false;
                      boolean jht     = false;
                      boolean jkk     = false;
                      boolean jkm     = false;
  
                      @SuppressWarnings("unused")
                      public void startElements(String uri, String localName, String qName, Attributes attributes) throws SAXException{
                          if (qName.equalsIgnoreCase("bpjs:kodeRefBank")){
                              b_krb = true;
                              System.out.println("yup");
                          }
                          if (qName.equalsIgnoreCase("bpjs:reqId")){
                              b_reqid = true;
                          }
                          if (qName.equalsIgnoreCase("bpjs:chId")){
                              b_ch = true;
                          }
                          if (qName.equalsIgnoreCase("bpjs:kodeBank")){
                              b_kb = true;
                          }
                          if (qName.equalsIgnoreCase("bpjs:tglTrx")){
                              b_tgl = true;
                          }
                          if (qName.equalsIgnoreCase("totalAmount")){
                              tot = true;
                          }
                          if (qName.equalsIgnoreCase("amountJHT")){
                              jht = true;
                          }
                          if (qName.equalsIgnoreCase("amountJKK")){
                              jkk = true;
                          }
                          if (qName.equalsIgnoreCase("amountJKM")){
                              jkm = true;
                          }
                      }
  
                      @SuppressWarnings("unused")
                      public void character(char ch[], int start, int length) throws SAXException{
                          if (b_krb){
                              System.out.println("(1) Value Of KodeRefBank : " + new String(ch, start, length));
                              b_krb = false;
                          }
                          if (b_reqid){
                              System.out.println("(2) Value Of ReqId : " + new String(ch, start, length));
                              b_reqid = false;
                          }
                          if (b_ch){
                              System.out.println("(3) Value Of ChId : " + new String(ch, start, length));
                              b_ch = false;
                          }
                          if (b_kb){
                              System.out.println("(4) Value Of KodeBank : " + new String(ch, start, length));
                              b_kb = false;
                          }
                          if (b_tgl){
                              System.out.println("(5) Value Of TglTrx : " + new String(ch, start, length));
                              b_tgl = false;
                          }
                          if (tot){
                              System.out.println("(6) Value Of Tot : " + new String(ch, start, length));
                              tot = false;
                          }
                          if (jht){
                              System.out.println("(7) Value Of JHT : " + new String(ch, start, length));
                              jht = false;
                          }
                          if (jkk){
                              System.out.println("(8) Value Of JKK : " + new String(ch, start, length));
                              jkk = false;
                          }
                          if (jkm){
                              System.out.println("(9) Value Of JKM : " + new String(ch, start, length));
                              jkm = false;
                          }
                      }
                  };
                  saxParser.parse(myinput, handler);
  
              } catch (Exception e) {
                  e.printStackTrace();
  
                  // TODO: handle exception
              }
  
              //SAX Parser to parse this xml
  
          }
          session.close();
          factory.close();
      }else{
          System.out.println("Please, check the 'No. Billing' again!!");
          String MESSAGEID = request.getParameter("MESSAGEID");
          System.out.println(MESSAGEID);
          model.addAttribute("errorMessageBPJSTK", "true");
      }
  
      return listDetailBPJS(model);
  }
  </code></pre>