如何在servlet中上传和读取XML文件及其标签

时间:2015-01-17 19:16:46

标签: java eclipse servlets

请建议我阅读XML文件及其标签。我能够检索标签的包含但不能检索标签名称。

代码段:

FileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(factory);

try {

    List<FileItem> fields = upload.parseRequest(request);
    out.println("Number of fields: " + fields.size() + "<br/><br/>");
    Iterator<FileItem> it = fields.iterator();
    if (!it.hasNext()) {
        out.println("No fields found");
        return;
    }
    out.println("<table border=\"1\">");
    while (it.hasNext()) {
        out.println("<tr>");
        FileItem fileItem = it.next();
        boolean isFormField = fileItem.isFormField();
        if (isFormField) {
            out.println("<td>regular form field</td><td>FIELD NAME: " + fileItem.getFieldName() + "<br/>STRING: " + fileItem.getString());
            out.println("</td>");
        } else {
            out.println("<td>file form field</td><td>FIELD NAME: " + fileItem.getFieldName() +
            "<br/>STRING: " + fileItem.getString() +
            "<br/>NAME: " + fileItem.getName() +
            "<br/>CONTENT TYPE: " + fileItem.getContentType() +
            "<br/>SIZE (BYTES): " + fileItem.getSize() +
            "<br/>TO STRING: " + fileItem.toString() 
            );

            out.println("</td>");
        }

使用的XML:

 <?xml version="1.0"?>
 -<students>
-<student>
 <name>John</name>
 <grade>B</grade>
 <age>12</age>
 </student>
 -<student>
 <name>Mary</name>
 <grade>A</grade>
 <age>11</age>
 </student>
 -<student>
 <name>Simon</name>
 <grade>A</grade>
 <age>18</age>
 </student>
 </students>

输出:

 FIELD NAME: Browse
 STRING: - John B 12 Mary A 11 Simon A 18 
 NAME: Samplexml.xml
 CONTENT TYPE: text/xml
 SIZE (BYTES): 313
 TO STRING: name=Samplexml.xml,StoreLocation=C:\Users\Bramesh\AppData\Local\Temp\upload_1aa898c7_7c38_4e32_958b_25efcf0b37c8_00000000.tmp, size=313 bytes, isFormField=false, FieldName=Browse

1 个答案:

答案 0 :(得分:0)

如果你有一个xml架构,最简单的方法就是使用JAXB,只需要做一点工作就可以将流解组为一堆代表你的xml的对象。如果您没有架构,那么可以使用sax解析器来完成。有关如何使用sax解析器读取xml的教程,请参阅http://www.mkyong.com/java/how-to-read-xml-file-in-java-sax-parser/。 使用上面的示例,您将调用getInputStream(),然后将其传递给SAXParser,并使用处理程序提取元素及其值的信息。