まず、Googleで時間を検索して、そのトピックについては何も検索しませんでした。 これは、私が間違ったやり方をしている、あるいは私が解決策を見越した理由かもしれません。XMLファイルのアップロードと解析(GWT経由)
私はGWTとAppengineを使用するアプリを持っていました。 XMLファイルをアップロードし、SAX-Parserで解析し、そのエントリをページに戻してArrayListを返します。
ローカルテストでは、Appengineの一部を削除しました。 私はGWTのセットアップ、commons-io & commons-fileuploadを持っていました。
これまでのところ、私はEntrypointとファイルアップロードを扱うためのサーブレットを作成しました。 XMLファイルのString表現を返すことは可能です。しかし、XMLファイルから情報を抽出して解析し、FlexTableに表示したいと考えています。だから私は、XMLファイルの私の要素を持つArrayListを作成し、私のエントリポイントクラスに返したいと思います。
エントリポイント:
public class XMLParser implements EntryPoint {
private static final String UPLOAD_ACTION_URL = GWT.getModuleBaseURL() + "upload";
@SuppressWarnings("unused")
private Logger logger = Logger.getLogger("XMLParserLogger");
private VerticalPanel mainPanel = new VerticalPanel();
private FlexTable articleFlexTable = new FlexTable();
private FileUpload fileUpload = new FileUpload();
private FormPanel form = new FormPanel();
/**
* This is the entry point method.
*/
public void onModuleLoad() {
fileUpload.setName("uploadFormElement");
form.setAction(UPLOAD_ACTION_URL);
form.setEncoding(FormPanel.ENCODING_MULTIPART);
form.setMethod(FormPanel.METHOD_POST);
form.add(fileUpload);
//Table for Articles
articleFlexTable.setText(0, 0, "ID");
articleFlexTable.setText(0, 1, "Amount");
articleFlexTable.setText(0, 2, "Start Amount");
articleFlexTable.setText(0, 3, "PCT");
articleFlexTable.setText(0, 4, "Price");
articleFlexTable.setText(0, 5, "Stock Value");
mainPanel.add(form);
mainPanel.add(new Button("Submit", new ClickHandler() {
public void onClick(ClickEvent event) {
form.submit();
}
}));
mainPanel.add(articleFlexTable);
form.addSubmitCompleteHandler(new FormPanel.SubmitCompleteHandler() {
public void onSubmitComplete(SubmitCompleteEvent event) {
String xml = event.getResults();
logger.info(xml);
Window.alert(xml);
}
});
RootPanel.get("parser").add(mainPanel);
}
}
サーブレット:
public class FileUploadServlet extends HttpServlet {
private static final long serialVersionUID = -5897221701350776117L;
private static final Logger log = Logger.getLogger(FileUploadServlet.class
.getName());
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// process only multipart requests
if (ServletFileUpload.isMultipartContent(req)) {
ServletInputStream sis = req.getInputStream();
BufferedReader bufferedReader = new BufferedReader(
new InputStreamReader(sis));
StringBuilder stringBuilder = new StringBuilder();
String line = null;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
String xml = stringBuilder.toString();
log.info(xml);
resp.setContentType("text/html");
resp.setStatus(HttpServletResponse.SC_CREATED);
resp.getWriter().print(xml);
resp.flushBuffer();
} else {
resp.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE,
"Request contents type is not supported by the servlet.");
}
}
のweb.xml:
<!-- Servlets -->
<context-param>
<!-- max size of the upload request -->
<param-name>maxSize</param-name>
<param-value>3145728</param-value>
</context-param>
<servlet>
<servlet-name>uploadServlet</servlet-name>
<servlet-class>net.mybecks.gwt.server.FileUploadServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>uploadServlet</servlet-name>
<url-pattern>/xmlparser/upload</url-pattern>
</servlet-mapping>
私はgwtupload、upload4gwtのようなLIBSを使用してみましたが、彼らは私の問題を解決しません文書化されていない。
私は、XMLファイルをアップロードしてコールバックとしてリストを返す方法を知りたいと思っています。私はすでに知っているSAXを介してファイルの解析。
BR、あなたのコードから mybecks
を(あなたが望むようまたは
JSONObject
)JsonUtils
と Javascript Overlay Typesを使用してJSONの出力を解析して、ArrayList
を作成していますか? XMLを解析するには?どのようにサーバーからエントリポイントにArrayListを送信するには?何らかの理由でコードが機能しないのですか? – jusioさて、XMLファイルをサーバーにアップロードしてリストを返す方法を知りたい。私はすでに知っているこのファイルの解析方法。私はそれを質問に追加しました – mybecks