java – DOM XML Parser示例

前端之家收集整理的这篇文章主要介绍了java – DOM XML Parser示例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有这个 XML文件.我只是解析这个 XML文件.这个例子展示了如何通过“name”获取节点,并显示值.如何显示数据库中的所有记录?
  1. <data399173_eff_sor>
  2. <record>
  3. <ID>1</ID>
  4. <item_no>1.0</item_no>
  5. <description>Hack off tiles and make good walls</description>
  6. <price>100</price>
  7. <base_qty>50</base_qty>
  8. <var_qty>20</var_qty>
  9. <base_price_>5000</base_price_>
  10. </record>
  11. <record>
  12. <ID>1</ID>
  13. <item_no>1.03</item_no>
  14. <description>Test</description>
  15. <price>45</price>
  16. <base_qty>100</base_qty>
  17. <var_qty>4500</var_qty>
  18. <base_price_>0</base_price_>
  19. </record>
  20. </data399173_eff_sor>

等等

Java代码

  1. File fXmlFile = new File("D:/formdata.xml");
  2. DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  3. DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  4. Document doc = dBuilder.parse(fXmlFile);
  5.  
  6. doc.getDocumentElement().normalize();
  7.  
  8. System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
  9.  
  10. NodeList nList = doc.getElementsByTagName("record");
  11.  
  12. System.out.println("----------------------------");
  13.  
  14. for (int temp = 0; temp < nList.getLength(); temp++) {
  15.  
  16. Node nNode = nList.item(temp);
  17.  
  18. System.out.println("\nCurrent Element :" + nNode.getNodeName());
  19.  
  20. if (nNode.getNodeType() == Node.ELEMENT_NODE) {
  21.  
  22. Element eElement = (Element) nNode;
  23.  
  24. System.out.println("Item No : " + eElement.getElementsByTagName("item_no").item(0).getTextContent());
  25. System.out.println("Description : " + eElement.getElementsByTagName("description").item(0).getTextContent());
  26. System.out.println("price : " + eElement.getElementsByTagName("price").item(0).getTextContent());
  27. System.out.println("base qty : " + eElement.getElementsByTagName("base_qty").item(0).getTextContent());
  28. System.out.println("Var qty : " + eElement.getElementsByTagName("var_qty").item(0).getTextContent());
  29. System.out.println("Base price : " + eElement.getElementsByTagName("base_price_").item(0).getTextContent());
  30.  
  31. }

在这个它只显示第一个记录.我想显示数据库中的所有记录

解决方法

xml无效. (您可以在线验证您的xml: http://www.w3schools.com/xml/xml_validator.asp)

您可以尝试使用此xml

  1. <records>
  2. <record>
  3. <ID>1</ID>
  4. <item_no>1.0</item_no>
  5. <description>Hack off tiles and make good walls</description>
  6. <price>100</price>
  7. <base_qty>50</base_qty>
  8. <var_qty>20</var_qty>
  9. <base_price_>5000</base_price_>
  10. </record>
  11. <record>
  12. <ID>1</ID>
  13. <item_no>1.03</item_no>
  14. <description>Test</description>
  15. <price>45</price>
  16. <base_qty>100</base_qty>
  17. <var_qty>4500</var_qty>
  18. <base_price_>0</base_price_>
  19. </record>
  20. </records>

并保留你的代码

  1. package test;
  2.  
  3. import javax.xml.parsers.DocumentBuilder;
  4. import javax.xml.parsers.DocumentBuilderFactory;
  5. import javax.xml.parsers.ParserConfigurationException;
  6.  
  7. import java.io.File;
  8. import java.io.IOException;
  9.  
  10. import org.w3c.dom.Document;
  11. import org.w3c.dom.Element;
  12. import org.w3c.dom.Node;
  13. import org.w3c.dom.NodeList;
  14. import org.xml.sax.SAXException;
  15.  
  16.  
  17. public class TestXml{
  18. public static void main (String[] args) throws ParserConfigurationException{
  19. TestXml t = new TestXml();
  20. t.readXml() ;
  21. }
  22. public void readXml () throws ParserConfigurationException{
  23. File fXmlFile = new File("D:/formdata.xml");
  24. DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
  25. DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
  26. Document doc = null;
  27. try {
  28. doc = dBuilder.parse(fXmlFile);
  29. } catch (SAXException e) {
  30. // TODO Auto-generated catch block
  31. e.printStackTrace();
  32. } catch (IOException e) {
  33. // TODO Auto-generated catch block
  34. e.printStackTrace();
  35. }
  36.  
  37. doc.getDocumentElement().normalize();
  38.  
  39. System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
  40.  
  41. NodeList nList = doc.getElementsByTagName("record");
  42.  
  43. System.out.println("----------------------------");
  44.  
  45. for (int temp = 0; temp < nList.getLength(); temp++) {
  46.  
  47. Node nNode = nList.item(temp);
  48.  
  49. System.out.println("\nCurrent Element :" + nNode.getNodeName());
  50.  
  51. if (nNode.getNodeType() == Node.ELEMENT_NODE) {
  52.  
  53. Element eElement = (Element) nNode;
  54.  
  55. System.out.println("Item No : " + eElement.getElementsByTagName("item_no").item(0).getTextContent());
  56. System.out.println("Description : " + eElement.getElementsByTagName("description").item(0).getTextContent());
  57. System.out.println("price : " + eElement.getElementsByTagName("price").item(0).getTextContent());
  58. System.out.println("base qty : " + eElement.getElementsByTagName("base_qty").item(0).getTextContent());
  59. System.out.println("Var qty : " + eElement.getElementsByTagName("var_qty").item(0).getTextContent());
  60. System.out.println("Base price : " + eElement.getElementsByTagName("base_price_").item(0).getTextContent());
  61.  
  62. }}}}

你会得到这个结果

  1. Root element :records
  2. ----------------------------
  3.  
  4. Current Element :record
  5. Item No : 1.0
  6. Description : Hack off tiles and make good walls
  7. price : 100
  8. base qty : 50
  9. Var qty : 20
  10. Base price : 5000
  11.  
  12. Current Element :record
  13. Item No : 1.03
  14. Description : Test
  15. price : 45
  16. base qty : 100
  17. Var qty : 4500
  18. Base price : 0

猜你在找的Java相关文章