如何用Java程序计算XML中price标签的数值总和?
修改Java DOM解析代码实现所有值求和
问题说明
你原来的DOM解析代码只获取了第一个<price>节点的值,要计算所有price的总和(目标结果150),只需要遍历所有<price>节点并累加数值即可。
示例XML结构
假设你的XML数据结构如下:
<products> <product> <name>商品A</name> <price>50</price> </product> <product> <name>商品B</name> <price>60</price> </product> <product> <name>商品C</name> <price>40</price> </product> </products>
修改后的Java DOM解析代码
import org.w3c.dom.Document; import org.w3c.dom.NodeList; import org.w3c.dom.Element; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import java.io.File; public class PriceSumCalculator { public static void main(String[] args) { try { // 初始化DOM解析工厂与解析器 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); // 替换为你的XML文件路径或输入流 Document doc = builder.parse(new File("products.xml")); // 获取所有<price>节点的集合 NodeList priceNodes = doc.getElementsByTagName("price"); int totalSum = 0; // 遍历每个price节点,累加数值 for (int i = 0; i < priceNodes.getLength(); i++) { Element priceElement = (Element) priceNodes.item(i); // 提取节点文本并转为整数,注意trim处理空白字符 int price = Integer.parseInt(priceElement.getTextContent().trim()); totalSum += price; } System.out.println("所有price值的总和:" + totalSum); // 预期输出150 } catch (Exception e) { e.printStackTrace(); } } }
关键修改点
- 不再只取第一个
<price>节点(item(0)),而是通过for循环遍历整个NodeList集合 - 每次循环提取当前
<price>节点的文本内容,转为数值后累加到总和变量中 - 加入
trim()处理,避免节点文本中的空白字符影响数值解析
关于你法语提问的回答
当然可以对已提取的price值进行求和,上面的代码正是先提取所有price值,再逐个累加计算总和的实现方式。
内容的提问来源于stack exchange,提问作者david9999
相关产品推荐
相关产品推荐

