错误信息
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;
}

解决方案 »

  1.   


    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>