| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 523 人关注过本帖
标题:程序提示错误,各位帮看一下
只看楼主 加入收藏
a1632248672
Rank: 2
来 自:烟台
等 级:论坛游民
帖 子:19
专家分:48
注 册:2013-5-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
程序提示错误,各位帮看一下
程序代码:
package 操作XML数据;

import import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class Test {
    public static void main(String[] args) {
        //1、得到DOM解析器的工厂实例
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        //2、从DOM工厂获得DOM解析器
        try {
            DocumentBuilder db = dbf.newDocumentBuilder();
            //3、解析xml文档,得到一个Document,即DOM树
            Document doc = db.parse("src/收藏信息.xml");
            //4、得到所有<Brand>节点列表信息
            NodeList list = doc.getElementsByTagName("Brand");
            //5、循环Brand信息
            for(int i=0;i<list.getLength();i++){
                Node brandnode = list.item(i);
                Element brandElement = (Element)brandnode;
                String brandname = brandElement.getAttribute("name");
//                System.out.println(brandname);
               
                NodeList childList = brandnode.getChildNodes();
                for(int j = 0;j<childList.getLength();j++){
                    Element typeElement =(Element)childList.item(j);
                    String typename = typeElement.getAttribute("name");
                   
                    System.out.println("手机"+brandname+typename);
                }
            }
        } catch (ParserConfigurationException e) {
            e.printStackTrace();
        } catch (SAXException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
       
    }
}
运行的时候总是提示Exception in thread "main" java.lang.ClassCastException: com. cannot be cast to org.w3c.dom.Element
    at 操作XML数据.Test.main(Test.java:35)
第三十五行是Element typeElement =(Element)childList.item(j);类型转换没错吧?怎么会报错呢?求科普
2013-08-15 13:24
ren829
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:15
帖 子:255
专家分:1174
注 册:2006-3-11
收藏
得分:20 
你要考虑一点, brandnode.getChildNodes() 所产生的NodeList 集合里 包含了 元素, 元素属性,和 内容,甚至是空白,你一味的强转成Element 自然是不行地方。;
2013-08-15 22:49
a1632248672
Rank: 2
来 自:烟台
等 级:论坛游民
帖 子:19
专家分:48
注 册:2013-5-2
收藏
得分:0 
回复 2楼 ren829
那我怎么往下读取下一个子节点的内容呢?该怎样修改呢?谢谢了,他们有人说是xml文档的问题。
程序代码:
<?xml version="1.0" encoding="GB2312"?>
<PhoneInfo>
    <Brand name="联想">
        <Type name="A60"></Type>   
    </Brand>
    <Brand name="苹果">
        <Type name="iphone4"></Type>
        <Type name="iphone4s"></Type>   
    </Brand>
</PhoneInfo>
我觉着xml没问题啊

[ 本帖最后由 a1632248672 于 2013-8-16 10:35 编辑 ]
2013-08-16 10:33
快速回复:程序提示错误,各位帮看一下
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017970 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved