for (int i = 0; i < nodeList.getLength(); i++) {
    Node aNode = nodeList.item(i);
    if(aNode.getNodeType()== Node.ELEMENT_NODE) {
      Element element = (Element)a;
    }
  ...
}
因为nodeList里面的node有可能是text型的,所以要先判断一下再转型

解决方案 »

  1.   

    我试了一下aNode.getNodeType()== Node.ELEMENT_NODE 为false,但现在的问题是我怎么才能得到字符串<events><event><eventid>1</eventid><when>0</when><p1> CSR Name</p1><p2></p2><p3></p3><p4></p4><p5></p5><p6></p6></event><event><eventid>2</eventid><when>11</when><p1>Customer1 </p1><p2></p2><p3></p3><p4></p4><p5></p5><p6></p6></event></events>里面的属性值呢?
      

  2.   

    Element element = (Element)nodeList.item(i);转换时会抛出ClassCastException
      

  3.   

    我给你我刚刚写的代码,你照着改改就可以了Element root=getXMLRoot();
            NodeList nl = root.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
    Node aNode = nl.item(i);
    if (aNode.getNodeType() == Node.ELEMENT_NODE) {
    if (aNode.getNodeName().equals("Group")) {
             NodeList gnl = aNode.getChildNodes();
        
        for (int j = 0; j < gnl.getLength(); j++) {
    Node gNode = gnl.item(j);
    if (gNode.getNodeType() == Node.ELEMENT_NODE) {     
    if (gNode
    .getNodeName()
    .equals("OwnedCases")) {
        NodeList cNL = gNode.getChildNodes();
    for (int k = 0; k < cNL.getLength(); k++) {
    Node caseNode = cNL.item(k);
    if (caseNode.getNodeType()
    == Node.ELEMENT_NODE) {
    if (caseNode
    .getNodeName()
    .equals("Case")) {
         }
    }
    }
    }
    else if(gNode
    .getNodeName()
    .equals("SimilarityMatrix")) {     
         }
    else if(gNode
    .getNodeName()
    .equals("Patition")) {     
        }
    }
        }
    }
    }
    }
      

  4.   

    private String getElementText(Element e) {
    NodeList nl = e.getChildNodes();
    for (int i = 0; i < nl.getLength(); i++) {
    Node n = nl.item(i);
    if (n instanceof org.w3c.dom.Text) {
    return n.getNodeValue();
    }
    }
    return "";
    }
      

  5.   

    要得到text值,需要下面这样操作if(gNode.getNodeName().equals("Patition")) {     String text=getElementText((Element)gNode);
        }
      

  6.   

    System.out.println(nodeList.item(i).getNodeType());
    看看他的类型是什么,去Node里的静态参数对照一下。
    按说应该是1的,1就是Element.我试过你这段xml,我这里测试通过的,我只是把你的p1,p2,p3的节点名都改成p了,测试是通过的
    DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(......)
      

  7.   

    我的nodeList.item(i).getNodeType()值为1,但是只要用Element element = (Element)nodeList.item(i)转换时就会抛出异常
      

  8.   

    谢谢各位大虾,是我自己一个不小心的错误造成的,我的Element和Node不是一个包