【问题标题】:Uploading and parsing an xml file in JSF在 JSF 中上传和解析 xml 文件
【发布时间】:2012-08-10 13:17:39
【问题描述】:

我想通过 JSF Tomahawk 上传一个 xml 文件,然后解析它。

我创建了以下表单:

<!DOCTYPE html>
<html lang="en"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:t="http://myfaces.apache.org/tomahawk"
    xmlns:ui="http://java.sun.com/jsf/facelets">
    <h:head>
       <title>Import</title>
    </h:head>
    <h:body>
       <h1>Import</h1>
       <h:form enctype="multipart/form-data">
           XML Datei mit den Kursdaten: 
           <t:inputFileUpload value="#{installationBean.uploadedFile}" />
           <h:commandButton value="submit" action="#{installationBean.submit}" />
           <h:messages />
       </h:form>
   </h:body> 

这是豆子:

包安装;

import java.io.IOException;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.apache.commons.io.FilenameUtils;
import org.apache.myfaces.custom.fileupload.UploadedFile;


@Stateless
@LocalBean
@ManagedBean
@ViewScoped
public class InstallationBean {

    private UploadedFile uploadedFile;


    public UploadedFile getUploadedFile() {
       return uploadedFile;
    }

    public void setUploadedFile(UploadedFile value) {
        uploadedFile = value;
    }


    public void submit()throws IOException {
        String fileName = FilenameUtils.getName(uploadedFile.getName());
        String contentType = uploadedFile.getContentType();
        byte[] bytes = uploadedFile.getBytes();

        // Parse xml
    }
}

我上传的文件是一个 xml 文件。 我怎样才能解析xml? 在我上面的代码中,上传文件后我得到了一个字节数组。 如何将其转换为 xml 文件并进行解析?

【问题讨论】:

    标签: java xml jsf


    【解决方案1】:

    您可以使用以下方法将此byte[] 解析为org.w3c.dom.Document

       InputStream is = new ByteArrayInputStream(byteArray);  
       DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
       DocumentBuilder builder = factory.newDocumentBuilder();  
       Document xml = builder.parse(is);
    

    【讨论】:

      【解决方案2】:

      您无需将其转换为 XML 文件。它已经是一个 XML 文件。要解析它,只需使用 Java SE 内置 JAXP API 或 Java EE 内置 JAXB API。如果你真的想把它保存在磁盘上,只需按通常的方式使用FileOutputStream

      这个问题与通过 JSF 上传文件无关。你成功地让那部分工作。例如,当您通过FileInputStream 获得byte[] 时,您会完全遇到同样的问题。

      【讨论】:

        猜你喜欢
        • 2012-02-25
        • 1970-01-01
        • 2011-04-22
        • 2014-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-21
        • 1970-01-01
        相关资源
        最近更新 更多