错误信息
java.util.NoSuchElementException
at java.util.HashMap$HashIterator.nextEntry(HashMap.java:2140)
at java.util.HashMap$EntryIterator.next(HashMap.java:2179)
at java.util.HashMap$EntryIterator.next(HashMap.java:2177)
at cn.gov.zz.GatherDateService.getSubmitOB(GatherDateService.java:346)
at cn.gov.cj.CjServlet.doPost(CjServlet.java:76)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:763)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:856)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:227)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:125)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:283)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:175)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3244)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:121)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2010)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:1916)源码:public Map getDestination(String SSZWXTBH, String SXBM) {
String destination[] = null;// 目标节点数组
String sourceNode = "";
Map map = new HashMap();
Element root = document.getRootElement();// 获取根节点root
// 第一次遍历得到政务编码
a: for (Iterator i = root.elementIterator(); i.hasNext();) {
Element element = (Element) i.next();// 得到根节点下的子节点
System.out.println("节点名称:" + element.getName() + "系统编号:"
+ element.attributeValue("nunber"));
// 如果政务编码相同然后获得他的业务事项的目标节点
if (element.attributeValue("nunber").equals(SSZWXTBH)) {
// 得到源节点
sourceNode = element.attributeValue("SourceNode");
// 判断是否是所有事项都共用一个目标节点
String isno = element.attributeValue("isNo");
if (("0").equals(isno)) {
// 得到目标节点
destination = new String[] { element
.attributeValue("destination") };
// 测试代码
b: for (int t = 0; t < destination.length; t++) {
System.out.println("源节点:" + sourceNode + "目标节点:"
+ destination[t]);
}
map.put(sourceNode, destination);
break a;
} else {
// 第二次循环得到所有事项的编码并与数据库里的编码对比 如果相等就取目标节点
boolean has = false;// 标识是否在第一层循环中找到事项,如果没找到事项编号,就去其子项找
c: for (Iterator j = element.elementIterator(); j.hasNext();) {
Element elementsx = (Element) j.next();// 得到业务事项
System.out.println("节点名称:" + elementsx.getName()
+ "事项编号:" + elementsx.attributeValue("sxbh"));
if (elementsx.attributeValue("sxbh").equals(SXBM)) {
// 得到目标节点的值
destination = elementsx.attributeValue(
"destination").toString().split("\\|");
// 测试代码
for (int t = 0; t < destination.length; t++) {
System.out.println("源节点:" + sourceNode
+ "目标节点:" + destination[t]);
}
map.put(sourceNode, destination);
has = true;
break a;
}
if (has == false) {
for (Iterator d = elementsx.elementIterator(); d
.hasNext();) {
Element elementc = (Element) d.next();// 得到业务事项子项 if (elementc.attributeValue("sxbh")
.equals(SXBM)) {
// 得到目标节点的值
destination = elementc.attributeValue(
"destination").toString().split(
"\\|");
// 测试代码
for (int t = 0; t < destination.length; t++) {
System.out.println("源节点:" + sourceNode
+ "目标节点:" + destination[t]);
}
map.put(sourceNode, destination);
break a;
}
}
}
} }
}
}
return map;
}
import java.io.*;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;public class xmljava
{ public static void main(String args[])
{
Element element=null;
File f =new File("a.xml");
DocumentBuilder db=null; //documentBuilder为抽象不能直接实例化(将XML文件转换为DOM文件)
DocumentBuilderFactory dbf=null;
try{
dbf= DocumentBuilderFactory.newInstance(); //返回documentBuilderFactory对象
db =dbf.newDocumentBuilder();//返回db对象用documentBuilderFatory对象获得返回documentBuildr对象 Document dt= db.parse(f); //得到一个DOM并返回给document对象
element = dt.getDocumentElement();//得到一个elment根元素
System.out.println("根元素:"+element.getNodeName()); //获得根节点 NodeList childNodes =element.getChildNodes() ; // 获得根元素下的子节点
for (int i = 0; i < childNodes.getLength(); i++) // 遍历这些子节点 {
Node node1 = childNodes.item(i); // childNodes.item(i); 获得每个对应位置i的结点 if ("Account".equals(node1.getNodeName()))
{
// 如果节点的名称为"Account",则输出Account元素属性type
System.out.println("\r\n找到一篇账号. 所属区域: " + node1.getAttributes().getNamedItem ("type").getNodeValue() + ". ");
NodeList nodeDetail = node1.getChildNodes(); // 获得<Accounts>下的节点
for (int j = 0; j < nodeDetail.getLength(); j++)
{ // 遍历<Accounts>下的节点
Node detail = nodeDetail.item(j); // 获得<Accounts>元素每一个节点
if ("code".equals(detail.getNodeName())) // 输出code
System.out.println("卡号: " + detail.getTextContent());
else if ("pass".equals(detail.getNodeName())) // 输出pass
System.out.println("密码: " + detail.getTextContent());
else if ("name".equals(detail.getNodeName())) // 输出name
System.out.println("姓名: " + detail.getTextContent());
else if ("money".equals(detail.getNodeName())) // 输出money
System.out.println("余额: "+ detail.getTextContent());
}
} }
}catch(Exception e){System.out.println(e);}
}
}<?xml version="1.0" encoding="gbk"?>
<Accounts>
<Account type="by0003">
<code>100001</code>
<pass>123</pass>
<name>李四</name>
<money>1000000.00</money>
</Account>
<Account type="hz0001">
<code>100002</code>
<pass>123</pass>
<name>张三</name>
<money>1000.00</money>
</Account>
</Accounts>