2010-12-15 13 views
5

का उपयोग करते हुए अनमशॉल करने की कोशिश करते समय तत्व 'AsifXml' की घोषणा नहीं मिल सकती है, जब मैं JAXB का उपयोग कर किसी XML दस्तावेज़ को unmarshall करने का प्रयास करते समय निम्न त्रुटि प्राप्त करता रहता हूं।अपवाद सीवीसी-elt.1: JAXB

cvc-elt.1:

JAXBContext jc = JAXBContext.newInstance("asif_objects"); 
    Unmarshaller u = jc.createUnmarshaller(); 
    SchemaFactory sf = SchemaFactory.newInstance(
      javax.xml.XMLConstants.W3C_XML_SCHEMA_NS_URI); 
    Schema schema = sf.newSchema(new File("ASIF_Schema1.1.6.xsd")); 
    u.setSchema(schema); 

    AsifXml doc 
     = (AsifXml)u.unmarshal(new FileInputStream("asif_small.xml")); 

मैं प्रासंगिक विश्वास है: तत्व की 'AsifXml'

कोड unmarshall को घोषणा नहीं ढूंढा जा सकता है के रूप में इस त्रुटि पढ़ता xsd फ़ाइलों का हिस्सा इस तरह दिखता है (टैग्स को छोड़ना और बंद करना क्योंकि मुझे यकीन नहीं है कि उन्हें वेबसाइट पर कैसे प्रारूपित किया जाए:

?xml version="1.0" encoding="UTF-8"? 
xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 
xmlns:asif="http://www.website.com/ASIF" 
targetNamespace="http://www.website.com/ASIF" elementFormDefault="qualified" 
attributeFormDefault="unqualified" version="1.1.6" 

xs:element name="AsifXml" 
    xs:complexType 
01 अब तक मैं इस एक ही गलती के लिए googling की कोशिश की है

AsifXml xmlns:AsifXml="http://www.website.com/ASIF" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.1.4" 
content="study" 

, लेकिन ऐसा लगता है सबसे प्रतिक्रियाओं वेब सेवाओं जो मैं कर रहा हूँ में त्रुटियों के साथ क्या करना है:

और क्या मैं प्रासंगिक एक्सएमएल मानते यहाँ है उपयोग नही कर रहा। मैंने यह भी सोचा कि शायद मुझे समस्याएं हल हो रही हैं क्योंकि मैं प्रॉक्सी के पीछे हूं और स्कीमा दस्तावेजों में दिए गए यूआरएल तक पहुंचने में असमर्थ था, लेकिन आगे के शोध पर मुझे यह धारणा मिल रही है कि उन यूआरएल के वास्तव में अस्तित्व में नहीं है दस्तावेज़ को प्रमाणित करने के लिए। और मैंने एक और नेटवर्क पर कोशिश की जो प्रॉक्सी के पीछे नहीं है और उसी त्रुटि को प्राप्त किया है।

इस समस्या के साथ किसी भी मदद की बहुत सराहना की है।

+0

मुझे यह भी ध्यान रखना चाहिए कि .xsd फ़ाइल और नमूना xml फ़ाइल जो मैं उपयोग कर रहा हूं, दोनों मुझे प्रदान की गई थीं। मैंने यह भी ध्यान दिया कि एक्सएमएल फ़ाइल 1.1.4 का संस्करण बताती है जबकि .xsd फ़ाइल 1.1.6 के संस्करण को कॉल करती है। क्या यह मुद्दा हो सकता है? –

उत्तर

4

नमूना एक्सएमएल फ़ाइल मुझे फर्जी लगती है। यह पहली नज़र में ठीक लग रहा है, लेकिन यह कोई मतलब नहीं है:

<AsifXml xmlns:AsifXml="http://www.website.com/ASIF"> 

यह एक टैग AsifXml बुलाया वाणी है, और एक उपसर्ग भी AsifXml कहा जाता है के साथ एक XML नामस्थान घोषित। हालांकि, दोनों के पास एक दूसरे के साथ कुछ लेना देना नहीं है। तत्व स्वयं को बिना किसी नामस्थान के छोड़ा जाता है, जो स्कीमा का उल्लंघन करता है।

बजाय निम्न नमूना प्रयास करें, यह काम करना चाहिए:

<AsifXml xmlns="http://www.website.com/ASIF" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     version="1.1.4" 
     content="study"> 

यह नमूना कहना AsifXml तत्व नाम स्थान http://www.website.com/ASIF है, जो है क्या स्कीमा की उम्मीद है।

कि नमूना समतुल्य रूप इनकोडिंग जा सकता है के रूप में:

<AsifXml:AsifXml xmlns:AsifXml="http://www.website.com/ASIF" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     version="1.1.4" 
     content="study"> 

यह एक ही बात के बराबर है, लेकिन इस संस्करण भ्रामक और वर्बोज़ है।

+2

आह जो पूरी तरह से काम करता है। उत्तर के लिए बहुत बहुत धन्यवाद और एक्सएमएल स्कीमा के काम के बारे में मुझे थोड़ा और समझने में मदद करता हूं। –