【发布时间】:2019-01-23 10:45:06
【问题描述】:
这是给出一些货币的 XML 文件 sn-p。它们都具有“货币名称”、“外汇购买”、“外汇销售”等值......
<?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 无法转换为 java.compiler/javax.lang.model.element.Element 在 javaPaket.WONTWORK.main(WONTWORK.java:36)
(第36行是“元素元素=(元素)节点;”顺便说一句。)
我该如何解决这个问题?我从另一个站点复制了类似的代码,只是更改了值。然而我得到了这个错误.....
【问题讨论】:
-
可能会用到应该看看这个stackoverflow.com/questions/13296583/…
-
已经看过但无法正确理解解决方案...因为我的代码与他的不同:/
-
检查我的代码,它与您的示例不同,使您能够正确解析文档。您要打印的值看起来很奇怪,因为它们位于 XML 元素中的不同位置(即“kod”、“Isim”和“forex Selling”),但我的示例确实为您提供了每个值您正在寻找。
-
Kod="AUD" 是货币标签的一种属性。所以你必须使用'getAttribute'代替'getTag'。