如何使用来自 XML (SAXParser) 的元素并将其显示给 table

How to use the element from XML (SAXParser) and show it to table

我正在开发一个使用 Spring MVC 和 Hibernate 的 Web 应用程序,

我的字段类型是 Clob,值是 XML, 之前使用 SAXParser 解析 clob, 如何使用 SAXParser 中的元素并将其显示给 table、

我真的不知道要将 SAXParser 中的元素显示给我的 table (JSP)

这是我的代码,

@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 <DetailBPJS> 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();
            System.out.println(myclob);

            //create InputSource from Reader
            InputSource myinput = new InputSource(myclob);
            System.out.println(myinput);

            try {

                SAXParserFactory factoryz = SAXParserFactory.newInstance();
                SAXParser saxParser = factoryz.newSAXParser();
                System.out.println(saxParser);

                DefaultHandler handler = new DefaultHandler(){
                    boolean b_num   = false;
                    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;

                    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException{
                        if (qName.equalsIgnoreCase("messageId")){
                            b_num = true;
                        }
                        if (qName.equalsIgnoreCase("bpjs:kodeRefBank")){
                            b_krb = true;
                        }
                        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;
                        }
                    }

                    public void characters(char ch[], int start, int length) throws SAXException{
                        if (b_num){
                            System.out.println("(1) Value of Billing Number : " + new String(ch, start, length));
                            String tust = new String(ch, start, length);
                            System.out.println(tust);
                            b_num = false;
                        }
                        if (b_krb){
                            System.out.println("(2) Value Of KodeRefBank : " + new String(ch, start, length));
                            b_krb = false;
                        }
                        if (b_reqid){
                            System.out.println("(3) Value Of ReqId : " + new String(ch, start, length));
                            b_reqid = false;
                        }
                        if (b_ch){
                            System.out.println("(4) Value Of ChId : " + new String(ch, start, length));
                            b_ch = false;
                        }
                        if (b_kb){
                            System.out.println("(5) Value Of KodeBank : " + new String(ch, start, length));
                            b_kb = false;
                        }
                        if (b_tgl){
                            System.out.println("(6) Value Of TglTrx : " + new String(ch, start, length));
                            b_tgl = false;
                        }
                        if (tot){
                            System.out.println("(7) Value Of Tot : " + new String(ch, start, length));
                            tot = false;
                        }
                        if (jht){
                            System.out.println("(8) Value Of JHT : " + new String(ch, start, length));
                            jht = false;
                        }
                        if (jkk){
                            System.out.println("(9) Value Of JKK : " + new String(ch, start, length));
                            jkk = false;
                        }
                        if (jkm){
                            System.out.println("(10) 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);
}

任何帮助都会很高兴 :) ~

您可以直接将 String 值添加到 ModelMap 并从与“errorMessageBPJSTK”相同的 jsp 访问它们。

if(b_num){
    model.addAttribute("billingNumber",new String(ch, start, length));   
    b_num = false;
}
if(b_krb){
    model.addAttribute("kodeRefBank",new String(ch, start, length));
    b_krb = false;
}

并在 jsp 中访问它们;

<td>Billing Number : </td>
<td>${billingNumber}</td>