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.pingtaimeng.com/article/detail/13683/JSP