2011-03-08 37 views
0
讀取XML文件,並顯示在textarea的

如何瀏覽和讀取文件(XML),並顯示它在Ext textarea的?上傳和分機

  1. 是否有可能在客戶端本身做功能?
  2. 我已經與Java試圖通過上傳XML文件並讀取它,併發送響應作爲XML字符串,但我無法在前端接收數據(獲得異常「返回的eval(」(「+ JSON + 「)」)「在extjs.all)?

    我在分機代碼


    var win = new Ext.Window({ 
        layout: 'fit', 
        title: 'XML Upload Window', 
        id: 'winFileRead', 
        resizable: false, 
        modal: true, 
        closeAction: 'close', 
        closable: true, 
        plain: true, 
        items: [{ 
         xtype: 'form', 
         id: 'frmFileRead', 
         fileUpload: true, 
         width: 500, 
         frame: true, 
         monitorValid: true, 
         autoHeight: true, 
         bodyStyle: 'padding: 10px 10px 0 10px;', 
         labelWidth: 50, 
         defaults: { 
          anchor: '95%', 
          allowBlank: false, 
          msgTarget: 'side' 
         }, 
         items: [{ 
          xtype: 'fileuploadfield', 
          id: 'verFileReadCmp', 
          emptyText: 'Select a File to import', 
          fieldLabel: 'File', 
          name: 'file', 
          buttonCfg: { 
           text: '', 
           iconCls: 'upload-icon' 
          } 
         }], 
         buttons: [{ 
          formBind: true, 
          text: 'Upload', 
          handler: function() { 
          var fp = Ext.getCmp('frmFileRead'); 
           if (fp.getForm().isValid()) { 
            fp.getForm().submit({ 
             url: 'viewXml.do', 
             params: {}, 
             method: 'POST', 
             waitMsg: 'Uploading your file...', 
             success: function(fp, o) { 
              if (Ext.decode(o.response.responseText).success) { 
               //Set the XML value to the textarea. Ext.getCmp('textareaXML').setValue(Ext.decode(o.response.responseText).message); 
              } else { 
               Util.showAlert('Err', Ext.decode(o.response.responseText).message); 
              } 
             }, 
             failure: function(response, options) { 
              Util.showAlert('Err', response.responseText); 
             }, 
             exception: function(a, b, c, d) {} 
            }); 
           } 
          } 
         }, 
         { 
          text: 'Reset', 
          handler: function() { 
           var fp = Ext.getCmp('frmFileRead'); 
           fp.getForm().reset(); 
         } 
        }] 
    }] 
    

    }); win.show();

    ***************************** 
    Java 
    **************************** 
    
    protected ModelAndView onSubmit(HttpServletRequest request, HttpServletResponse response, Object command, BindException errors) throws ServletException, IOException 
    { 
        UploadFileTO uploadFileTO = (UploadFileTO) command; 
        List<XmlTO> al=new ArrayList<XmlTO>(); 
        Map<String,String> model = new HashMap<String,String>(); 
    
        MultipartFile file = uploadFileTO.getFile(); 
        InputStream inputStream = null; 
        String xmlString=""; 
        String xml=null; 
        if (file.getSize() > 0) { 
         inputStream = file.getInputStream(); 
    
         int readBytes = 0; 
         byte[] buffer = new byte[10000]; 
         while ((readBytes = inputStream.read(buffer, 0 , 10000))!=-1) 
         { 
          xml=new String(buffer, 0, readBytes); 
          xmlString=xmlString.concat(xml); 
         } 
         inputStream.close(); 
        } 
        if (!xmlString.equals("")){ 
         System.out.println(xmlString); 
         model.put("result", "{success:true, message: \""+xmlString+"\"}"); 
        }else{ 
         model.put("result", "{success:false, message: \"File upload error.\"}"); 
        } 
        return new ModelAndView("index", model); 
    } 
    
    **************************** 
    
    Exception message in JSON evaluation. 
    ******************************* 
    
    <TABLE width=400> 
        <P style="FONT: 13pt/15pt verdana">The XML page cannot be displayed 
         <P style="FONT: 8pt/11pt verdana">Cannot view XML input using style sheet. Please correct the error and then click the <A href="javascript:location.reload()" target=_self>Refresh</A> button, or try again later. 
          <HR> 
    
          <P 
           style="FONT: bold 8pt/11pt verdana"> 
           Invalid at the top level of the document. Error processing resource 'http://XXXXXXXX/viewXml.do'. 
          </P><PRE 
            style="LINE-HEIGHT: 12pt; FONT-VARIANT: normal; FONT-STYLE: normal; FONT-SIZE: 10pt; FONT-WEIGHT: normal" 
            ><FONT color=blue></FONT> 
           </PRE> 
         </P> 
        <TBODY> 
        </TBODY> 
    </TABLE> 
    

    1. ,如果它是不正確的方法,請喜歡或提供支持主流瀏覽器(IE,火狐,Chrome瀏覽器)的最佳方法是什麼?
+0

你能證明你的XML返回的? –

+0

感謝烏拉圭回合答覆的人,我會去檢查烏爾3點,上面我已經添加示例XML。再次感謝。 – vineth

回答

1

還需要看看你的XML。你的代碼似乎很好。以下幾條準則可以幫助您解決問題:

  1. 檢查XML是否格式錯誤。
  2. 記住你是在嵌入JSON XML裏面,你會如果瀏覽器中執行viewXml.do
後接收到一個有效的JSON需要逃避任何單引號(')或雙引號(「)。
  • 檢查。

    我相信這個問題是由一個或這三者的組合引起我只是想你的代碼與以下JSON和正常工作:

    {success:true, message: '<?xml version=\'1.0\' encoding=\'ISO-8859-1\'?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Test body..</body></note>'} 
    

    的XML得到呈現非常清楚的ExtJS的文本區域。

  • +0

    感謝你的答覆男人,我會檢查你的3點,上面我已經添加了樣本XML。再次感謝。 – vineth

    +0

    我無法發送上述格式的XML。還有一件事我需要上傳具有不同屬性的大型xml 40000行。 – vineth