java.lang.ClassCastException :Error

标签 java xml

这是提供一些货币的 XML 文件片段。它们都有“货币名称”、“外汇买入”、“外汇卖出”等值...

<?xml version="1.0" encoding="UTF-8"?>

<Currency CrossOrder="1" Kod="AUD" CurrencyCode="AUD">
        <Unit>1</Unit>
        <Isim>AVUSTRALYA DOLARI</Isim>
        <CurrencyName>AUSTRALIAN DOLLAR</CurrencyName>
        <ForexBuying>4.4233</ForexBuying>
        <ForexSelling>4.4521</ForexSelling>
        <BanknoteBuying>4.4030</BanknoteBuying>
        <BanknoteSelling>4.4789</BanknoteSelling>
        <CrossRateUSD>1.3839</CrossRateUSD>
        <CrossRateOther/>
    </Currency>

<Currency CrossOrder="2" Kod="DKK" CurrencyCode="DKK">
        <Unit>1</Unit>
        <Isim>DANIMARKA KRONU</Isim>
        <CurrencyName>DANISH KRONE</CurrencyName>
        <ForexBuying>0.93070</ForexBuying>
        <ForexSelling>0.93527</ForexSelling>
        <BanknoteBuying>0.93004</BanknoteBuying>
        <BanknoteSelling>0.93742</BanknoteSelling>
        <CrossRateUSD>6.5827</CrossRateUSD>
        <CrossRateOther/>
    </Currency>

这是我的实际代码:

import javax.lang.model.element.Element;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import java.io.*;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class PasteClass {

    public static void main(String[] args) {

        try {
            File xmlFile = new File("TCMB2.xml");
            DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
            org.w3c.dom.Document document = documentBuilder.parse(xmlFile);
            NodeList list = document.getElementsByTagName("Currency");

            for (int i = 0; i < list.getLength(); i++) {

                Node node = list.item(i);

                if (node.getNodeType() == Node.ELEMENT_NODE) {
                    Element element = (Element) node;
                    System.out.println("Kod: "
                            + ((org.w3c.dom.Document) element)
                                .getElementsByTagName("Kod").item(0).getTextContent());
                    System.out.println("Para Birimi: "
                            + ((org.w3c.dom.Document) element)
                                .getElementsByTagName("Isim").item(0).getTextContent());
                    System.out.println("Forex Satis Ucreti: " 
                            + ((org.w3c.dom.Document) element)
                                .getElementsByTagName("ForexSelling").item(0).getTextContent());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

我想要做的是,简单地从 XML 文件中获取一些数据。这是我第一次使用 XML 进行工作。我只是希望它打印每个元素的“kod”、“Isim”和“forex Selling”值。但是当我运行代码时,出现以下错误:

java.lang.ClassCastException: java.xml/com.sun.org.apache.xerces.internal.dom.DeferredElementImpl cannot be cast to java.compiler/javax.lang.model.element.Element at javaPaket.WONTWORK.main(WONTWORK.java:36)

(第 36 行是“Element element = (Element) node;” 行顺便说一句。)

我该如何解决这个问题?我从其他站点复制了类似的代码,只是更改了值。但我收到了这个错误......

最佳答案

您可以尝试运行下面的代码吗?仅更改了 for block 中的代码。

public static void main(String[] args) {

    try {

        File xmlFile = new File("TCMB2.xml");
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        org.w3c.dom.Document doc = documentBuilder.parse(xmlFile);

        NodeList list = doc.getElementsByTagName("Currency");


        for (int i = 0; i < list.getLength(); i++) {

            Node node = list.item(i);

            if (node.getNodeType() == Node.ELEMENT_NODE) {
                Element element = (Element) node;
                System.out.println("Kod: " + element.getAttribute("Kod"));
                System.out.println("Para Birimi: " + element.getElementsByTagName("Isim").item(0).getTextContent());
                System.out.println("Forex Satis Ucreti: " + element.getElementsByTagName("ForexSelling").item(0).getTextContent()) ;

            }
        }

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

示例输出:

科德:澳元
帕拉·比里米:AVUSTRALYA DOLARI
外汇 Satis Ucreti:4.4521
科德:DKK
帕拉比里米:DANIMARKA KRONU
外汇 Satis Ucreti:0.93527

关于java.lang.ClassCastException :Error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51877627/

相关文章:

java - XML API 或开源 jar,用于根据给定路径提取 XML 子集

java - 如何在 Android 应用程序的 Activity 中显示 system.out.println() 在控制台中显示的内容?

java - 具有移位字节的新 ByteBuffer(Java)?

java - 将空值 JTextFormatted 插入双列到 mysql

java - Java Plug-In 小程序选项中,jar "pre-loading"是做什么用的?

Java - 编写旧版本忽略的代码

android - com.facebook.widget.ProfilePictureView - 错误 : Error parsing XML: unbound prefix

java - 字符串java的拆分引用

php - 为什么这些 XML 标记会在我的 PHP 中产生错误?

java - 如何从 inputtextarea 下载包含内容的 xml 文件?