DOM XML Parser Example

后端 未结 3 1444
春和景丽
春和景丽 2020-11-30 10:46

I have this XML file.I just parse this XML file.This example shows how to get the node by “name”, and display the value.How to show all records from database?



        
3条回答
  •  时光说笑
    2020-11-30 11:11

    The xml is not valid. (You can validate your xml online: http://www.w3schools.com/xml/xml_validator.asp)

    You can try with this xml

    
     
      1
      1.0
      Hack off tiles and make good walls
      100
      50
      20
      5000   
     
     
      1
      1.03
      Test
      45
      100
      4500
      0
     
    
    

    and keep your code

    package test;
    
    import javax.xml.parsers.DocumentBuilder;
    import javax.xml.parsers.DocumentBuilderFactory;
    import javax.xml.parsers.ParserConfigurationException;
    
    import java.io.File;
    import java.io.IOException;
    
    import org.w3c.dom.Document;
    import org.w3c.dom.Element;
    import org.w3c.dom.Node;
    import org.w3c.dom.NodeList;
    import org.xml.sax.SAXException;
    
    
    public class TestXml{ 
     public static void main (String[] args) throws ParserConfigurationException{
         TestXml t = new TestXml();
         t.readXml() ;
       } 
     public void readXml () throws ParserConfigurationException{
        File fXmlFile = new File("D:/formdata.xml");
        DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
        DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
        Document doc = null;
        try {
            doc = dBuilder.parse(fXmlFile);
        } catch (SAXException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    
        doc.getDocumentElement().normalize();
    
        System.out.println("Root element :" + doc.getDocumentElement().getNodeName());
    
        NodeList nList = doc.getElementsByTagName("record");
    
        System.out.println("----------------------------");
    
        for (int temp = 0; temp < nList.getLength(); temp++) {
    
            Node nNode = nList.item(temp);
    
            System.out.println("\nCurrent Element :" + nNode.getNodeName());
    
            if (nNode.getNodeType() == Node.ELEMENT_NODE) {
    
                Element eElement = (Element) nNode;
    
                System.out.println("Item No : " + eElement.getElementsByTagName("item_no").item(0).getTextContent());
                System.out.println("Description : " + eElement.getElementsByTagName("description").item(0).getTextContent());
                System.out.println("price : " + eElement.getElementsByTagName("price").item(0).getTextContent());
                System.out.println("base qty : " + eElement.getElementsByTagName("base_qty").item(0).getTextContent());
                System.out.println("Var qty : " + eElement.getElementsByTagName("var_qty").item(0).getTextContent());
                System.out.println("Base price : " + eElement.getElementsByTagName("base_price_").item(0).getTextContent());                
    
            }}}}
    

    and you will have this result

    Root element :records
    ----------------------------
    
    Current Element :record
    Item No : 1.0
    Description : Hack off tiles and make good walls
    price : 100
    base qty : 50
    Var qty : 20
    Base price : 5000
    
    Current Element :record
    Item No : 1.03
    Description : Test
    price : 45
    base qty : 100
    Var qty : 4500
    Base price : 0
    

提交回复
热议问题