【问题标题】:Printing XML values to a html page将 XML 值打印到 html 页面
【发布时间】:2016-03-26 20:56:06
【问题描述】:

我创建了一个 java 服务,它允许用户查看 XML、Json 或 String 格式的数据。我的问题是我的网页没有在 html 页面上显示 XML 标签。检查元素时,XML 标记在那里,但它们不会打印到屏幕上。有什么想法吗?

这是一个屏幕截图,也是我的代码。

public class FindStaff extends HttpServlet {
@Override
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    String sortedDataText = null;
    List<StaffInfo> staffInfoList = StaffUtils.findAllStaff();
    String format = request.getParameter("format");

    if (format.equalsIgnoreCase("json")) {

        sortedDataText = "{ \"membersOfStaff\":[ ";

        for (int i = 0; i < staffInfoList.size(); i++) {

            sortedDataText += "{\"id\":" + "\"" + staffInfoList.get(i).getStaffID() + "\",";
            sortedDataText += "\"forename\":" + "\"" + staffInfoList.get(i).getForename() + "\",";
            sortedDataText += "\"surname\":" + "\"" + staffInfoList.get(i).getSurname() + "\",";
            sortedDataText += "\"address\":" + "\"" + staffInfoList.get(i).getLocation() + "\",";
            sortedDataText += "\"phone\":" + "\"" + staffInfoList.get(i).getPhone() + "\",";
            sortedDataText += "\"email\":" + "\"" + staffInfoList.get(i).getEmail() + "\"}";

            if (staffInfoList.size() - i > 1) {
                sortedDataText += ",";
            }
        }

        sortedDataText += "]}";

        System.out.println("JSON DATA:  " + sortedDataText);

    } else if (format.equalsIgnoreCase("xml")) {
        sortedDataText = "<membersOfStaff>";
        for (int i = 0; i < staffInfoList.size(); i++) {

            sortedDataText += "<staffMember><id>" + staffInfoList.get(i).getStaffID() + "</id>";
            sortedDataText += "<forename>" + staffInfoList.get(i).getForename() + "</forename>";
            sortedDataText += "<surname>" + staffInfoList.get(i).getSurname() + "</surname>";
            sortedDataText += "<address>" + staffInfoList.get(i).getLocation() + "</address>";
            sortedDataText += "<phoneNumber>" + staffInfoList.get(i).getPhone() + "</phoneNumber>";
            sortedDataText += "<email>" + staffInfoList.get(i).getEmail() + "</email></staffMember>";

        }
        sortedDataText += "</membersOfStaff>";
        System.out.println("XML DATA:  " + sortedDataText);

    } else if (format.equalsIgnoreCase("string")) {

        sortedDataText = "membersOfStaff[ ";
        for (int i = 0; i < staffInfoList.size(); i++) {

            sortedDataText += "id=" + staffInfoList.get(i).getStaffID() + ",";
            sortedDataText += "forename=" + staffInfoList.get(i).getForename() + ",";
            sortedDataText += "surname=" + staffInfoList.get(i).getSurname() + ",";
            sortedDataText += "address=" + staffInfoList.get(i).getLocation() + ",";
            sortedDataText += "phoneNumber=" + staffInfoList.get(i).getPhone() + ",";
            sortedDataText += "email=" + staffInfoList.get(i).getEmail();

            if (staffInfoList.size() - i > 1) {
                sortedDataText += ", \n\n\n";
            }
        }

        sortedDataText += "]";

        System.out.println("TEXT DATA:  " + sortedDataText );
    }

    PrintWriter out = response.getWriter();
    out.print(sortedDataText);

}

我的问题是 XML。 json数据正确显示,字符串数据也正确显示。任何想法都将不胜感激(我是新手)

【问题讨论】:

    标签: java html json xml servlets


    【解决方案1】:

    如果您将 XML 输出转储到 HTML 页面中,浏览器将不会知道您已从 HTML 切换到 XML,并将您的 XML 视为损坏的 HTML,在这种情况下,这似乎意味着它将文本从页面上的未知元素。

    要在 HTML 页面中显示原始 XML,您可以通过编程方式将开头的“

    【讨论】:

      【解决方案2】:

      浏览器尝试呈现您的 xml。它像其他 html 元素一样将 之间的所有内容作为标签处理。 如果你想在页面上带一个

      看看来自 Apache Commons Lang 的 StringEscapeUtils

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-05
        • 1970-01-01
        • 1970-01-01
        • 2012-04-07
        • 2011-11-01
        • 2011-09-27
        • 1970-01-01
        相关资源
        最近更新 更多