我正在尝试使用 DOM 方法在 JSP 中解析 XML。下面是 XML:
<?xml version="1.0" encoding="UTF-8"?>
<apis xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance'>
<api name="getFormFields" requesttype ="GET">
<url>/fieldtype/</url>
<parameters>
<parameter><![CDATA[fieldtype=textbox&fieldId=8668376496495]]></parameter>
</parameters>
</api>
</apis>
我想读取<parameters>
标签,显示参数值,但不能这样做。下面是我用来执行此操作的 JSP。此 JSP 显示 URL<api>
name
和requesttype
. 我还想<parameters>
点击提交,我想将此数据发送到脚本。我没有做到这一点。
<%@page contentType="text/html;charset=UTF-8"%>
<%@page pageEncoding="UTF-8"%>
<%@ page session="false" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@page import="org.w3c.dom.*, javax.xml.parsers.* ,java.io.File,java.util.*, javax.servlet.http.*"%>
<%
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(new File(
"C:\\Documents and Settings\\Desktop\\apc.xml"));
%>
<%!
public boolean isTextNode(Node n){
return n.getNodeName().equals("#text");
}
%>
<html>
<head>
<META http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title><fmt:message key="welcome.title"/></title>
<link rel="stylesheet" href="<c:url value="/resources/blueprint/screen.css" />" type="text/css" media="screen, projection">
<link rel="stylesheet" href="<c:url value="/resources/blueprint/print.css" />" type="text/css" media="print">
</head>
<body>
<script type="text/javascript">
var xmlStr="\n";
function showData()
{
alert('here');
xmlStr="\n";
var pageNumber;
if(document.forms[0].services[0].checked||document.forms[0].services[1].checked)
{
if(document.forms[0].services[1].checked)
{
alert(document.forms[0].services[0].checked);
var urlData = document.getElementById('urlData').value;
alert(urlData);
}
}
}
</script>
<form name="myForm">
<h2><font color='green'>List of Service Api</font></h2>
<table border="2">
<tr>
<th>Methods</th>
<th>Request Type</th>
<th>URL</th>
</tr>
<%
doc.getDocumentElement().normalize();
Element element = doc.getDocumentElement();
NodeList apiNodes = element.getChildNodes();
for (int i=0; i<apiNodes.getLength(); i++){
Node nodeApi = apiNodes.item(i);
if (isTextNode(nodeApi))
continue;
NodeList url = nodeApi.getChildNodes();
%>
<tr>
<td>
<input type="hidden" name="apiNames" value="<%= apiNodes.item(i).getAttributes().item(0) %>"/>
<input type="radio" name="services" value="0"><%= apiNodes.item(i).getAttributes().item(0) %></td>
<td><input type="hidden" name="requestType" value="<%= apiNodes.item(i).getAttributes().item(1) %>"/><%= apiNodes.item(i).getAttributes().item(1) %></td>
<%
for (int j=0; j<url.getLength(); j++ ){
Node node = url.item(j);
if ( isTextNode(node))
continue;
%>
<td><input type="hidden" name="urlData" value="<%= node.getFirstChild().getNodeValue() %>"/><%= node.getFirstChild().getNodeValue() %></td>
<%
}
%>
</tr>
<br>
<%
}
%>
<td> <button name="SubmitRequest" onclick="showData();">Submit Request</button></td>
</table>
<textarea name="response" cols="150" rows="120"></textarea>
</form>
</body>
</html>