在JSP中处理XML数据通常需要使用Java的XML解析库,例如Java的DOM(Document Object Model)或SAX(Simple API for XML)。以下是一个简单的JSP页面处理XML数据的例子,使用DOM解析库。

1. JSP页面代码(parseXML.jsp):
<%@ page import="java.io.InputStream,java.io.ByteArrayInputStream" %>
<%@ page import="javax.xml.parsers.DocumentBuilder,javax.xml.parsers.DocumentBuilderFactory" %>
<%@ page import="org.w3c.dom.Document,org.w3c.dom.Node,org.w3c.dom.NodeList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>处理XML数据</title>
</head>
<body>
    <%
        // XML数据
        String xmlData = "<root>"
                        + "<person>"
                        + "<name>John Doe</name>"
                        + "<age>30</age>"
                        + "</person>"
                        + "<person>"
                        + "<name>Jane Doe</name>"
                        + "<age>25</age>"
                        + "</person>"
                        + "</root>";

        // 将XML字符串转换为InputStream
        InputStream inputStream = new ByteArrayInputStream(xmlData.getBytes("UTF-8"));

        // 使用DOM解析XML
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document document = builder.parse(inputStream);

        // 获取根元素
        Node root = document.getDocumentElement();

        // 遍历子节点
        NodeList persons = root.getChildNodes();
        for (int i = 0; i < persons.getLength(); i++) {
            Node person = persons.item(i);

            if (person.getNodeType() == Node.ELEMENT_NODE && person.getNodeName().equals("person")) {
                NodeList personInfo = person.getChildNodes();
                String name = null;
                int age = 0;

                for (int j = 0; j < personInfo.getLength(); j++) {
                    Node info = personInfo.item(j);

                    if (info.getNodeType() == Node.ELEMENT_NODE) {
                        if (info.getNodeName().equals("name")) {
                            name = info.getTextContent();
                        } else if (info.getNodeName().equals("age")) {
                            age = Integer.parseInt(info.getTextContent());
                        }
                    }
                }

                // 输出解析结果
                out.println("<p>Person: " + name + ", Age: " + age + "</p>");
            }
        }
    %>
</body>
</html>

在上述例子中,xmlData变量包含了一个简单的XML字符串。通过DocumentBuilder解析XML,并使用DOM的Node和NodeList类遍历XML文档的元素。最后,输出解析的结果。

请注意,这只是一个基本的例子,实际应用中可能需要根据XML的结构进行更复杂的处理。此外,如果XML数据较大或需要更高性能的解析,可能需要考虑使用SAX解析库。


转载请注明出处:http://www.zyzy.cn/article/detail/13683/JSP