का उपयोग कर इस इनपुट XML है नामस्थान उपसर्ग के साथ एक्सएमएल पढ़ने में असमर्थ:डोम पार्सर
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<SOAP-ENV:Body>
<ns2:SendResponse xmlns:ns2="http://mycompany.com/schema/">
<ns2:SendResult>
<ns2:Token>A00179-02</ns2:Token>
</ns2:SendResult>
</ns2:SendResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
इस कोड है कि मैं एक्सएमएल को पढ़ने के लिए उपयोग कर रहा हूँ (वैरिएबल xmlString एक्सएमएल ऊपर होता है):
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
DocumentBuilder db = dbf.newDocumentBuilder();
InputSource is = new InputSource();
is.setCharacterStream(new StringReader(xmlString));
Document doc = db.parse(is);
System.out.println("Element :" + doc.getElementsByTagName("Token").item(0));
System.out.println("Element :" + doc.getElementsByTagName("ns2:Token").item(0));
आउटपुट:
Element :null
Element :[ns2:Token: null]
मैं अगर मैं का उपयोग तत्व को पढ़ने में सक्षम हूँ "ns2: टोकन" टैग नाम के रूप में है, लेकिन मैं वें का उपयोग नहीं करना चाहते हैं ई मेरे कोड में उपसर्ग क्योंकि मुझे यकीन नहीं है कि यह भविष्य में समान होगा या बदल जाएगा। क्या टैग नाम में नेमस्पेस को हार्ड-कोडिंग किए बिना xml तत्व को पढ़ने का कोई तरीका है?
हो सकता है कि एक हैक है, लेकिन एक आकर्षण की तरह मेरी समस्या हल करती है :) – Tarmo