java - 如何通过java找到存储在XML文件中的节点值的总和?

标签 java xml netbeans sum nodes

对于糟糕的格式和可能愚蠢的问题,我深表歉意......我在这些领域是新手。

我创建了一个简单的 XML 文档来表示我喜欢的爱好、该爱好所需的元素以及这些元素的价格。我正在编写一个 Java 应用程序来读取 XML 文件并通过使用节点输出其内容。我已经让程序的那部分正常工作了。

但是,我想弄清楚的是,是否可以采用代表我已经提取的“价格”值的值,并找到它们的总和?

我在互联网上阅读了多个不同的线程,但似乎都不适合我的场景。

XML:

<?xml version="1.0"?>
<Wakeboarding>
    <gear>
        <description> Board </description>
        <price currency = "USD"> 400.00 </price>
    </gear>
    <gear>
        <description> Bindings </description>
        <price currency = "USD"> 200.00 </price>
    </gear>
    <gear>
        <description> Helmet </description>
        <price currency = "USD"> 75.00 </price>
    </gear>
    <gear>
        <description> Lifevest </description>
        <price currency = "USD"> 75.00 </price>
    </gear>
    <gear>
        <description> Handle </description>
        <price currency = "USD"> 50.00 </price>
    </gear>
</Wakeboarding>

JAVA:

public class HobbyReader 
{
    public static void main(String[] args) throws ParserConfigurationException, SAXException, IOException 
    {
       try 
       {  
    File fXmlFile = new       File("/Users/Pete/Documents/NetBeansProjects/HobbyXML/src/hobby.xml");

    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);

    doc.getDocumentElement().normalize();

    System.out.println("My Hobby: " + doc.getDocumentElement().getNodeName());

    NodeList nList = doc.getElementsByTagName("gear");

    System.out.println("----------------------------");

    for (int temp = 0; temp < nList.getLength(); temp++) 
        {
        Node nNode = nList.item(temp);

        if (nNode.getNodeType() == Node.ELEMENT_NODE) 
                { 
            Element eElement = (Element) nNode;

            System.out.println("Gear Description: " +                 eElement.getElementsByTagName("description").item(0).getTextContent());

            System.out.println("Price: " +                       eElement.getElementsByTagName("price").item(0).getTextContent());
                }
        }

输出:

run:
My Hobby: Wakeboarding
----------------------------
Gear Description:  Board 
Price:  400.00 
Gear Description:  Bindings 
Price:  200.00 
Gear Description:  Helmet 
Price:  75.00 
Gear Description:  Lifevest 
Price:  75.00 
Gear Description:  Handle 
Price:  50.00 

预先感谢您的帮助!

最佳答案

您已经在打印价格,因此您已经有了该数字的字符串值,因此您只需将该值转换为数字并将所有值相加即可。

double sum = 0.0;
for (int temp = 0; temp < nList.getLength(); temp++) 
    {
    Node nNode = nList.item(temp);

    if (nNode.getNodeType() == Node.ELEMENT_NODE) 
            { 
        Element eElement = (Element) nNode;

        System.out.println("Gear Description: " +                 eElement.getElementsByTagName("description").item(0).getTextContent());

        System.out.println("Price: " +                       eElement.getElementsByTagName("price").item(0).getTextContent());
        sum += Double.parseDouble(eElement.getElementsByTagName("price").item(0).getTextContent());
            }
    }
System.out.println("Total: " + sum);

关于java - 如何通过java找到存储在XML文件中的节点值的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17842598/

相关文章:

java - Hibernate 与 Apache Torque

Java非工作方法?

xml - 如何使用 Delphi 检查 XML 文件是否格式正确?

xml - 如何从此 SQL Server XML 字段获取列列表?

java - Swing JList 调整大小范围

java - 如何将自定义 .. 包(?)导入 netbeans 6.8

java - 如何优化 Oracle 11g 和 Hibernate 的批量 INSERT?

Java作业。 boolean 逻辑有问题

javascript - 如何向加载到 D3.js 的外部 SVG 添加缩放 + 拖动行为?

java - 为什么 Scanner.next() 不接受键盘输入按下?