我正在使用Spring MVC和Hibernate的Web应用程序,
我在我的数据库(Oracle)上有这个结构数据,
CLOB数据的值是XML,我想解析它并读取/打印元素或将其用于其他任何内容, 我遵循了这个教程thinktibits和mkyong,但我遇到了困难,我甚至无法打印出我想要的xml元素,
这是我的CLOB数据的一部分,
<rawdata_out>
<soapenv:Envelope xmlns:mhpc="http://service.bni.co.id/mhp-common" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:bpjs="http://bpjs.com">
<soapenv:Header/>
<soapenv:Body>
<bpjs:bayarTagihan>
<bpjs:chId>BNI</bpjs:chId>
<bpjs:reqId>TLR00471344</bpjs:reqId>
<bpjs:kodeBank>020</bpjs:kodeBank>
<bpjs:username>bni001</bpjs:username>
<bpjs:password>bni#jms2014</bpjs:password>
<bpjs:noTagihan>140721438362</bpjs:noTagihan>
<bpjs:kodeRefBank>JHT447487#JKK447487#JKM447487</bpjs:kodeRefBank>
<bpjs:tglTrx>12-08-2014 15:08:55</bpjs:tglTrx>
<bpjs:avl/>
</bpjs:bayarTagihan>
</soapenv:Body>
</soapenv:Envelope>
</rawdata_out>
这是我的代码,
@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();
//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);
}
任何帮助都会很愉快:)