【问题标题】:ClassCastException error hereClassCastException 错误在这里
【发布时间】:2023-04-05 16:07:02
【问题描述】:

当我尝试读取/打印一个 xml 数据库时收到错误代码 -

这是文件的代码 -

 package xml;

import java.io.IOException;
import java.io.FileInputStream;

import javax.lang.model.element.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import java.io.FileNotFoundException;

public class MyDomParser {

    public static void main(String[] args){
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    try {
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse("C://users/user/desktop/xml/xml/src/xml/people.xml");
        NodeList personList = doc.getElementsByTagName("person");
        for (int i=0; i<personList.getLength(); i++){
            Node p = personList.item(i);
            if(p.getNodeType()==Node.ELEMENT_NODE){
                Element person = (Element) p;
                String id = (String) ((DocumentBuilderFactory)person).getAttribute("id");
                NodeList nameList = ((Node)person).getChildNodes();
                for(int j=0; j< ((NodeList)nameList).getLength(); j++){
                    Node n = nameList.item(j);
                    if(n.getNodeType()==Node.ELEMENT_NODE){
                        Element name = (Element) n;
                        System.out.println("Person " + id + ":" + name.getSimpleName() + "=" + ((Node)name).getTextContent());

                    }

                }
            //  ((Document) r).getAttributes().getNamedItem("author").getNodeValue()
            }
        }
    } catch (ParserConfigurationException e) {

        e.printStackTrace();
    }   catch (SAXException e) {

        e.printStackTrace();
    }   catch (IOException e) {

    e.printStackTrace();

    }
}
}

这是我在执行并尝试运行上述代码时收到的错误消息:

Exception in thread "main" java.lang.ClassCastException: com.sun.org.apache.xerces.internal.dom.DeferredElementImpl cannot be cast to javax.lang.model.element.Element
at xml.MyDomParser.main(MyDomParser.java:27)

我的代码可能有什么问题?我正在使用 Eclipse IDE 来键入和编辑我的代码。我应该使用另一个 IDE 吗?

“people.xml”文件也可以在下面看到:

<?xml version ="1.0"?>

<people>

<person id ="1">
    <lastname>Doe</lastname>
    <firstname>John</firstname>
    </person>
    <person id="2">
    <lastname>Smith</lastname>

    <firstname>Jim</firstname>
    </person>
</people>   

这是一个只有几个名称标签的小 xml 文件,但由于 ClassCastException 错误,我什至无法正确执行代码。对此有什么看法吗?感谢磨坊的帮助!

【问题讨论】:

    标签: java xml database tags classcastexception


    【解决方案1】:

    你导入错误元素,应该是org.w3c.dom.Element

    【讨论】:

    • 这不起作用...至少在我的文件上...在这种情况下Java版本重要吗?
    猜你喜欢
    • 2017-01-20
    • 2023-03-19
    • 2017-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    相关资源
    最近更新 更多