这是提供一些货币的 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/