0

フォーマットが不十分で、ばかげた質問になる可能性があることをお詫びします...私はこれらの分野では初心者です。

私が楽しんでいる趣味、その趣味に必要なアイテム、およびそれらのアイテムの価格を表すために作成した単純な XML ドキュメントがあります。XMLファイルを読み取り、ノードを使用してその内容を出力するJavaアプリケーションを作成しています。プログラムのその部分が正しく動作するようになりました。

しかし、私が理解しようとしているのは、私がすでに引っ張っている「価格」の値を表す値を取り、それらの合計を見つけることは可能ですか?

インターネットで複数の異なるスレッドを読みましたが、いずれも私のシナリオに適合していないようです。

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>

ジャワ:

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 

助けてくれてありがとう!

4

2 に答える 2

1

すでに価格を出力しているため、その数値の文字列値が既にあるため、その値を数値に変換してすべてを合計するだけです。

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);
于 2013-07-24T19:03:21.503 に答える
0

変更は、すべてを印刷する代わりに、すべての価格を追加する value という名前の double 変数を持っていることです。[読み込まれる生データはJavaでは文字列であるため、double型に変更する必要があります]

double value=0.0;
     for (int temp = 0; temp < nList.getLength(); temp++) 
     {
        org.w3c.dom.Node nNode = nList.item(temp);

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

           String price = eElement.getElementsByTagName("price").item(0).getTextContent(); // example String
           value = value + Double.parseDouble(price);
        }
     }
     System.out.println(value);
于 2013-07-24T19:13:21.153 に答える