-3

JSFトマホーク経由で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ファイルです。解析するには、JavaSE組み込みのJAXPAPIまたはJavaEE組み込みのJAXBAPIのいずれかを使用します。実際にディスクにも保存したい場合はFileOutputStream、通常の方法を使用してください。

この問題は、JSFによるファイルのアップロードとは何の関係もありません。その部分は正常に機能しました。たとえば、によってを取得した場合も、まったく同じ問題が発生します。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 に答える