मुझे पता है कि यह कई बार पूछा गया था लेकिन मैं अभी भी इसे काम नहीं कर सकता। मैं एक्सएमएल स्ट्रिंग को दस्तावेज़ ऑब्जेक्ट में कनवर्ट करता हूं और फिर इसे पार्स करता हूं।जावा एक्सएमएल कास्ट नोड टू एलिमेंट
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.*;
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder;
try
{
builder = factory.newDocumentBuilder();
Document document = builder.parse(new InputSource(new StringReader(result)));
Node head = document.getFirstChild();
if(head != null)
{
NodeList airportList = head.getChildNodes();
for(int i=0; i<airportList.getLength(); i++) {
Node n = airportList.item(i);
Element airportElem = (Element)n;
}
}
catch (Exception e) {
e.printStackTrace();
}
जब मैं तत्व को नोड वस्तु n डाली मैं एक अपवाद java.lang.ClassCastException मिलती है:: यहाँ कोड है org.apache.harmony.xml.dom.TextImpl org.w3c में ढाला नहीं जा सकता है। dom.Element। जब मैं नोड ऑब्जेक्ट के नोड प्रकार की जांच करता हूं तो यह Node.TEXT_NODE कहता है। मेरा मानना है कि यह नोड होना चाहिए। ELEMENT_NODE। क्या मैं सही हू?
तो मैं नोड को एलिमेंट में कैसे परिवर्तित करूं, इसलिए मैं element.getAttribute ("attrName") जैसी कुछ कर सकता हूं।
<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfCity xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >
<City>
<strName>Abu Dhabi</strName>
<strCode>AUH</strCode>
</City>
<City>
<strName>Amsterdam</strName>
<strCode>AMS</strCode>
</City>
<City>
<strName>Antalya</strName>
<strCode>AYT</strCode>
</City>
<City>
<strName>Bangkok</strName>
<strCode>BKK</strCode>
</City>
</ArrayOfCity>
अग्रिम धन्यवाद:
यहाँ मेरी एक्सएमएल है!
प्रक्रिया करने के लिए एक अलग कोड रखने की शर्त की आवश्यकता नहीं है, हम कैसे जान सकते हैं कि पहला नोड तत्व या पाठ होना चाहिए, जब आप हेवन करते हैं शो नहीं एन हमें दस्तावेज? मुझे दृढ़ता से संदेह है कि पार्सर सही है हालांकि ... मुझे संदेह है कि आप शायद गैर-तत्व नोड्स को छोड़ना चाहते हैं। –
मैंने एक्सएमएल जोड़ा है। नोड एक तत्व होना चाहिए, एक पाठ नहीं। क्या मैं सही हूँ? –
Student
हां, लेकिन मुझे लगता है कि आपको '' और '' और ' ' और '' के बीच एक टेक्स्ट तत्व (संभवतः केवल एक लाइन ब्रेक) मिलेगा। –