2013-10-16 6 views
5

मेरे पास यह XML फ़ाइल है। मैं बस इस XML फ़ाइल को पार्स करता हूं। यह उदाहरण दिखाता है कि नोड को "नाम" से कैसे प्राप्त करें, और मूल्य प्रदर्शित करें। डेटाबेस से सभी रिकॉर्ड कैसे दिखाएं?DOM XML पार्सर उदाहरण

<data399173_eff_sor> 
<record> 
    <ID>1</ID> 
    <item_no>1.0</item_no> 
    <description>Hack off tiles and make good walls</description> 
    <price>100</price> 
    <base_qty>50</base_qty> 
    <var_qty>20</var_qty> 
    <base_price_>5000</base_price_> 
</record> 
<record> 
    <ID>1</ID> 
    <item_no>1.03</item_no> 
    <description>Test</description> 
    <price>45</price> 
    <base_qty>100</base_qty> 
    <var_qty>4500</var_qty> 
    <base_price_>0</base_price_> 
</record> 
</data399173_eff_sor> 

और इतने पर

जावा कोड

File fXmlFile = new File("D:/formdata.xml"); 
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); 
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); 
    Document doc = dBuilder.parse(fXmlFile); 

    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());     

     } 

इस में इसकी सिर्फ पहली record.i डेटा बेस में सभी रिकॉर्ड को प्रदर्शित करने के

+0

होगा मैंने अपना एक्सएमएल फाइल संपादित किया.अब यह मूल फ़ाइल है जिसे मैंने सर्वर से डाउनलोड किया – Aanshi

उत्तर

3

मुझे नहीं लगता कि चाहते हैं दिखाने आपका एक्सएमएल मान्य है - आपको केवल एक्सएमएल में एक रूट तत्व होने की अनुमति है।

तो तुम जब कार्य करें:

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

आप केवल एक ही तत्व प्राप्त करने के लिए जा रहे हैं। जो कि पहले <record>...</record>

आदेश इसे ठीक करने के लिए, आप इस प्रकार का मूल तत्व किसी प्रकार में अपने <record> के सभी टैग रैप करने के लिए की आवश्यकता होगी है:

<root> 
    <record> 
    <id>1</id> 
    </record> 
    <record> 
    <id>2</id> 
    </record> 
    ... 
</root> 

और आप कहते हैं कि करना होगा :

NodeList nList = doc.getDocumentElement().getElementsByTagName("record"); 
+0

सं। नोडलिस्ट nList = doc.getElementsByTagName ("रिकॉर्ड") का अर्थ है कि यह केवल रिकॉर्ड तत्वों को संभालेगा – Aanshi

0

आप इस कोड को लूप में आजमा सकते हैं।

Node nNode = nList.item(temp); 
NodeList list = nNode.getChildNodes(); 
list.item(0).getTextContent(); 
8

एक्सएमएल मान्य नहीं है। (आप अपने xml ऑनलाइन मान्य कर सकते हैं: http://www.w3schools.com/xml/xml_validator.asp)

आप इस एक्सएमएल

<records> 
<record> 
    <ID>1</ID> 
    <item_no>1.0</item_no> 
    <description>Hack off tiles and make good walls</description> 
    <price>100</price> 
    <base_qty>50</base_qty> 
    <var_qty>20</var_qty> 
    <base_price_>5000</base_price_> 
</record> 
<record> 
    <ID>1</ID> 
    <item_no>1.03</item_no> 
    <description>Test</description> 
    <price>45</price> 
    <base_qty>100</base_qty> 
    <var_qty>4500</var_qty> 
    <base_price_>0</base_price_> 
</record> 
</records> 

के साथ प्रयास करें और अपने कोड

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());     

     }}}} 

रख सकते हैं और आप इस परिणाम

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 
+0

मैं इसे आज़माता हूं लेकिन आउटपुट एक ही है – Aanshi

+0

मैंने आपके नए एक्सएमएल के साथ प्रयास किया और यह काम कर रहा है। क्या आप जावा कोड के साथ कोशिश कर सकते हैं और परिणाम दिखा सकते हैं। – fazerty

+0

हाँ मैंने आपके कोड की कोशिश की। यह निम्नलिखित आउटपुट देता है। रूट तत्व: _data399173_eff_sor ---------------------------- वर्तमान तत्व: रिकॉर्ड आइटम नहीं: 1.0 विवरण: बंद हैक टाइल्स और अच्छा दीवारों बनाने मूल्य: 100 आधार मात्रा: 50 वार मात्रा: 20 आधार मूल्य: 5000 आइटम नहीं: 1.01 विवरण: स्नान के क्षेत्र में फर्श को तोड़ (भूमि का टुकड़ा या timbe मूल्य: 4 आधार मात्रा : 1000 बार qty: 0 आधार मूल्य: 4000 – Aanshi

संबंधित मुद्दे