2010-07-22 20 views
8

हाय सब मैं जावा में नेको/जेर्सेस का उपयोग करके एक डोम पेड़ को पार्स करने की कोशिश कर रहा हूं।जेरेसेस या नेको में नोड पर getElementsByTagName को कॉल नहीं कर सकता?

NodeList divs = this.doc.getElementsByTagName("DIV"); 
for(int i=0; i < divs.getLength(); i++) { 
    NodeList images = divs.item(i).parentNode().getElementsByTagName("IMG"); 
    // operate on these 
} 

वह है जो मैं आदर्श रूप से करना चाहता हूं। ऐसा लगता है कि मैं केवल दस्तावेज़ पर getElementsByTagName पर कॉल कर सकता हूं? क्या मुझसे कुछ गलत हो रही है? क्या मुझे इसे Node तत्व पर कॉल करने में सक्षम होना चाहिए?

मैं उन दस्तावेज़ों से देख सकता हूं जो वहां नहीं हैं: http://xerces.apache.org/xerces-j/apiDocs/org/w3c/dom/Node.html तो शायद मुझे इसे एक और तरीका करने की ज़रूरत है?

धन्यवाद!

उत्तर

0

हाँ, यह अजीब है। पायथन के xml.dom.minidom में एक नोड.getElementsByTagName है। शायद यह मानक का हिस्सा नहीं है। इसके बजाय, आप divs.item(i).parentNode().getChildNodes() पर एक आंतरिक लूप को फिर से सक्रिय कर सकते हैं।

6

एक नोडलिस्ट केवल नोड्स देता है और getElementsByTagName केवल Element node पर उपलब्ध है इसलिए आपको अपने नोड को तत्व में डालने की आवश्यकता है, यहां नीचे एक उदाहरण दिया गया है।

final NodeList images = ((Element)divs.item(i).getParentNode()).getElementsByTagName("IMG"); 

हालांकि इस के साथ सावधान रहना रूप में यह कि getParentNode() हमेशा एक तत्व

यह सुरक्षित होगा रिटर्न मान लिया गया है, लेकिन एक बहुत अधिक वर्बोज़

final Node n = divs.item(i).getParentNode(); 

if(n instanceof Element) { 
    final Element e = (Element)n; 
    e.getElementsByTagName("IMG"); 
} 

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

  • कोई संबंधित समस्या नहीं^_^