2012-06-07 32 views
9

के बीच अलग-अलग मेरे पास निम्नलिखित Document ऑब्जेक्ट - Document myDoc है।"getDocumentElement" और "getFirstChild"

myDoc द्वारा ...

myDoc = DocumentBuilderFactory.newInstance() 
      .newDocumentBuilder().parse(file); 

अब मैं एक्सएमएल फ़ाइल की जड़ प्राप्त करना चाहते हैं एक XML फ़ाइल रखती है। वहाँ

Node firstChild = this.myDoc.getFirstChild() 

और

Node firstChild = (Node)myDoc.getDocumentElement() 

के बीच कोई अंतर पहले रास्ते में है, firstChild एक XML फ़ाइल की एक नोड जड़ धारण लेकिन यह Node की गहराई नहीं होगा। हालांकि, दूसरे तरीके से, firstChild सभी गहराई के साथ रूट होगा।

उदाहरण के लिए, मैं निम्नलिखित एक्सएमएल

<inventory> 
    <book num="b1"> 
    </book> 
    <book num="b2"> 
    </book> 
    <book num="b3"> 
    </book> 
</inventory> 

और file यह रखती है।

पहले मामले में, int count = firstChild.getChildNodes()count = 0 देता है।

दूसरा मामला count = 3 देगा।

क्या मैं सही हूँ?

उत्तर

14

मेरे द्वारा प्राप्त किए गए नोड को myDoc.getFirstChild() दस्तावेज़ रूट रूट नहीं हो सकता है यदि दस्तावेज़ रूट नोड - जैसे टिप्पणी नोड से पहले अन्य नोड्स हैं।

import org.w3c.dom.*; 

public class ReadXML { 

    public static void main(String args[]) throws Exception{  

     DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); 
     DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); 

     // Document elements 
     Document doc = docBuilder.parse(new File(args[0])); 

     Node firstChild = doc.getFirstChild(); 
     System.out.println(firstChild.getChildNodes().getLength()); 
     System.out.println(firstChild.getNodeType()); 
     System.out.println(firstChild.getNodeName()); 

     Node root = doc.getDocumentElement(); 
     System.out.println(root.getChildNodes().getLength()); 
     System.out.println(root.getNodeType()); 
     System.out.println(root.getNodeName()); 

    } 
} 

जब निम्न XML फ़ाइल को पार्स:

0 
8 
#comment 
3 
1 
catalog 

लेकिन अगर मैं टिप्पणी को निकाल दें, यह देता है::

<?xml version="1.0"?> 
<!-- Edited by XMLSpy --> 
<catalog> 
    <product description="Cardigan Sweater" product_image="cardigan.jpg"> 
     <catalog_item gender="Men's"> 
     <item_number>QWZ5671</item_number> 
     <price>39.95</price> 
     <size description="Medium"> 
      <color_swatch image="red_cardigan.jpg">Red</color_swatch> 
      <color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch> 
     </size> 
     <size description="Large"> 
      <color_swatch image="red_cardigan.jpg">Red</color_swatch> 
      <color_swatch image="burgundy_cardigan.jpg">Burgundy</color_swatch> 
     </size> 
     </catalog_item>  
    </product> 
</catalog> 

निम्नलिखित परिणाम देता है नीचे दिए गए उदाहरण को देखो

3 
1 
catalog 
3 
1 
catalog 
+2

आह तो टिप्पणी ने diff को जन्म दिया ईरेंस .. वाह धन्यवाद! – URL87