org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag "</meta>".
在库里没有数据的时候就会报这个错误,可是库里有数据的时候就不会抱错,我的源代码:
import com.mchange.v2.c3p0.ComboPooledDataSource;
import com.synball.bridge.business.OrganizationManager;
import com.synball.bridge.entity.Organization;
import com.synball.framework.SpringHelper;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;/**
 *
 * @author Administrator
 */
public class SubAppAction extends DispatchAction {    private static Log slog = LogFactory.getLog(SubAppAction.class);
    /*
    select SUM(recordCount) ct, app_id, app_name, org_id, org_name from (
    select numid, q.guid, senddirection, recordcount, startdate, bytecount,org_id,org_name,app_id,app_name from  syn_data_exchange_logs e LEFT JOIN (
    select * from syn_processes p left JOIN (
    select id app_id, app_Name, g.org_id, org_Name 
    from  syn_appsystems a left JOIN syn_organizations g
    on a.org_id = g.org_id
    ) c  on p.sendeeId = c.app_id
    ) q  on e.guid = q.guid
    ) x  
    where x.org_id = 1 group by app_id order by ct desc;
     */    public ActionForward sender(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.setContentType("application/xml");
        response.setHeader("Cache-Control","no-store"); 
        response.setHeader("Pragrma","no-cache"); 
        response.setDateHeader("Expires",0); 
        
        Document doc = DocumentHelper.createDocument();
        Element chart = doc.addElement("chart");
        chart.addAttribute("baseFontSize", "12");
        chart.addAttribute("palette", "2");
        chart.addAttribute("formatNumberScale", "0");
        OrganizationManager organizationManager = (OrganizationManager) SpringHelper.getManagerByClass(Organization.class);
        Organization sorg = organizationManager.getSelfOrg();        String sql = "select SUM(recordCount) ct, app_id, app_name, org_id, org_name from (    select numid, q.guid, senddirection, recordcount, startdate, bytecount,org_id,org_name,app_id,app_name from  syn_data_exchange_logs e LEFT JOIN (    select * from syn_processes p left JOIN (    select id app_id, app_Name, g.org_id, org_Name     from  syn_appsystems a left JOIN syn_organizations g    on a.org_id = g.org_id    ) c  on p.senderId = c.app_id    ) q  on e.guid = q.guid    ) x      where x.org_id="+sorg.getId()+" group by app_id order by ct desc";
        ComboPooledDataSource dataSource = (ComboPooledDataSource) SpringHelper.getBean("dataSource");
        Connection cnn = null;
        ResultSet rs = null;
        PreparedStatement pstmt = null;
        try {
            cnn = dataSource.getConnection();
            pstmt = cnn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            
            for (int i=0;rs.next();i++) {
                Element set = chart.addElement("set");
                set.addAttribute("label", rs.getString(3));
                set.addAttribute("value", String.valueOf(rs.getInt(1)));
                if (i==0)
                    set.addAttribute("isSliced", "1");
            //dataset.addValue(Double.parseDouble(String.valueOf(rs.getInt(1))), "first", rs.getString(3));
            }
        } catch (SQLException ex) {
            slog.error("build XML: " + doc.asXML(), ex);
        } finally {
            rs.close();
            pstmt.close();
            cnn.close();
        }        PrintWriter out = response.getWriter();
        out.println(doc.asXML());
        out.flush();
        out.close();        return null;    }
    
        public ActionForward senderDetail(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
        response.setContentType("application/xml");
        response.setHeader("Cache-Control","no-store"); 
        response.setHeader("Pragrma","no-cache"); 
        response.setDateHeader("Expires",0); 
        Document doc = DocumentHelper.createDocument();
        Element chart = doc.addElement("chart");
        chart.addAttribute("baseFontSize", "12");
        chart.addAttribute("palette", "2");
        chart.addAttribute("formatNumberScale", "0");
        
        OrganizationManager organizationManager = (OrganizationManager) SpringHelper.getManagerByClass(Organization.class);
        Organization sorg = organizationManager.getSelfOrg();        String sql = "select SUM(recordCount) ct, app_id, app_name, org_id, org_name from (    select numid, q.guid, senddirection, recordcount, startdate, bytecount,org_id,org_name,app_id,app_name from  syn_data_exchange_logs e LEFT JOIN (    select * from syn_processes p left JOIN (    select id app_id, app_Name, g.org_id, org_Name     from  syn_appsystems a left JOIN syn_organizations g    on a.org_id = g.org_id    ) c  on p.senderId = c.app_id    ) q  on e.guid = q.guid    ) x  where x.org_id="+sorg.getId()+" group by app_id order by ct desc";
        ComboPooledDataSource dataSource = (ComboPooledDataSource) SpringHelper.getBean("dataSource");
        Connection cnn = null;
        ResultSet rs = null;
        PreparedStatement pstmt = null;
        try {
            cnn = dataSource.getConnection();
            pstmt = cnn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            
            for (int i=0;rs.next();i++) {
                Element set = chart.addElement("set");
                set.addAttribute("label", rs.getString(3));
                set.addAttribute("value", String.valueOf(rs.getInt(1)));            }
        } catch (SQLException ex) {
            slog.error("build XML: " + doc.asXML(), ex);
        } finally {
            rs.close();
            pstmt.close();
            cnn.close();
        }        PrintWriter out = response.getWriter();
        System.out.print(doc.asXML());
        out.println(doc.asXML());
        out.flush();
        out.close();        return null;    }}

解决方案 »

  1.   

    The element type "meta" must be terminated by the matching end-tag " </meta>". 
    是不是页面中缺少结束符</meta>
      

  2.   

    org.xml.sax.SAXParseException: The element type "meta" must be terminated by the matching end-tag " </meta>".
    在库里没有数据的时候就会报这个错误,可是库里有数据的时候就不会抱错,我的源代码:
    -------------------------------------------------------
    可能是数据库里没有数据的时候生成xml少了结束标签
      

  3.   

    看一下当数据为null时 
    for (int i=0;rs.next();i++) { 
                    Element set = chart.addElement("set"); 
                    set.addAttribute("label", rs.getString(3)); 
                    set.addAttribute("value", String.valueOf(rs.getInt(1)));             } 
    这个循环是不会执行的.
    看一下如果不执行这里 那些 生成的那些元素会对你构建xml有影响.
      

  4.   

    我是接手的别人的项目,代码他写的很乱,我的库里是有数据的,可能是数据不符合他的sql条件,所以检索不出来。谢谢各位的建议,我在研究一下吧
      

  5.   

    缺少</meta>
    仔细查下!