2011-03-24 26 views
5

यहां मेरा कोड है:SAX में सेट नेमस्पेसएवेयर (सत्य) सेट करते समय "xmlns: XXX" विशेषता कैसे प्राप्त करें?

path = wsdlPath; 
SAXParserFactory saxfac = SAXParserFactory.newInstance(); 
saxfac.setNamespaceAware(true); 
saxfac.setXIncludeAware(true); 
saxfac.setValidating(false); 
SAXParser saxParser = saxfac.newSAXParser(); 
saxParser.parse(wsdlPath, this); 

setNamespaceAware=true सेट करने के बाद, मुझे public void startElement(String uri, String localName, String qName, Attributes attributes) पैरामीटर attributes विधि public void startElement(String uri, String localName, String qName, Attributes attributes) में xmlns:XXX विशेषता नहीं मिल सकती है। निम्न नोड के लिए

:

<definitions name="Service1" 
    targetNamespace="http://www.test.com/service" 
    xmlns="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" 
    xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" 
    xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" 
    xmlns:tns="http://www.test.com/"> 

मुझे बस name और targetNamespace विशेषता मिलती है। xmlns, xmlns:wsdl, xmlns:mime, xmlns:http और xmlns:tnsattributes पैरामीटर में हैं। लेकिन वे सुलभ नहीं हैं।

setNamespaceAware=true का उपयोग करने और नोड के सभी गुण प्राप्त करने का कोई तरीका है?

उत्तर

7

जब आपके XML पार्सर एक्सएमएल नाम स्थान के बारे में पता है, तो आप उन संपत्तियों से का उपयोग, की जरूरत नहीं चाहिए, क्योंकि वे केवल अपने XML में इस्तेमाल नामस्थान के लिए कम नामों परिभाषित करते हैं।

उस स्थिति में आप हमेशा अपने पूर्ण नाम (उदा। http://schemas.xmlsoap.org/wsdl/) का उपयोग करके नाम रिक्त स्थान देखें और एक्सएमएल (उदा। wsdl) में उन्हें किस छोटे नाम से अलिया किया गया है, इसे अनदेखा कर सकते हैं।

तथ्य यह है कि SAX उन मूल्यों को प्रदान नहीं करता है Attributes class पर प्रलेखित है:

यह [...] नामस्थान घोषणाओं (xmlns*) के रूप में इस्तेमाल में विशेषताएं नहीं है जब तक कि http://xml.org/sax/features/namespace-prefixes सुविधा के लिए सेट है जाएगा true (यह डिफ़ॉल्ट रूप से false है)।

तो saxfac.setFeature("http://xml.org/sax/features/namespace-prefixes", true) का उपयोग करके आपको उन मानों को प्राप्त करने में मदद करनी चाहिए।

+0

यह काम करता है! यू के लिए बहुत से धन्यवाद! – DeepNightTwo

+0

मैंने इस सलाह का उपयोग करने की कोशिश की और पाया कि मुझे निम्नलिखित भी करना है: 'saxfac.setFeature (" http://xml.org/sax/features/namespaces ", false);' –

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