-3

我想通过 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 文件并进行解析?

4

2 回答 2

2

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

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

于 2012-08-10T13:28:29.663 回答
2

您可以使用以下内容将其解析byte[]org.w3c.dom.Document.

   InputStream is = new ByteArrayInputStream(byteArray);  
   DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();  
   DocumentBuilder builder = factory.newDocumentBuilder();  
   Document xml = builder.parse(is);
于 2012-08-10T13:35:55.227 回答