दिलचस्प पोस्ट
एंड्रॉइड आंतरिक / बाह्य मेमोरी का मुफ्त आकार मिलता है सी ++ में परिवर्तित कन्स्ट्रक्टर क्या है? ये किसके लिये है? ScrollView प्रोग्राम को अक्षम करें? प्राइमफेस को दबाए जाने पर घटनाओं का निष्पादन आदेश p: कमांड बटन लिनक्स पर अजगर के दो संस्करण कैसे 2.7 डिफ़ॉल्ट बनाने के लिए आईएसओ 8601 प्रारूप से एक .NET डेटटाइम कैसे बनाएं SwingUtilities.invokeLater क्या करता है? अक्षरों और अंकों (या अंकों और अक्षरों के बीच) के बीच एक स्ट्रिंग कैसे विभाजित है? JQuery का उपयोग कर छवि स्रोत बदलना नए सी / सी ++ मानकों के लिए विजुअल स्टूडियो समर्थन? मैं Firebase कंसोल का उपयोग किए बिना एक Firebase क्लाउड संदेशन सूचना कैसे भेज सकता / सकती हूं? एप्लिकेशन को नियोजित करते समय "असीमित सामर्थ्य" जेसीई नीति फ़ाइलों को स्थापित करने से बचने के लिए कैसे? दूषित कैनवास निर्यात नहीं किए जा सकते हैं मैं एक HTML टूलटिप में कैरिज रिटर्न कैसे उपयोग कर सकता हूं? बूटस्ट्रैप कैरोसेल एकाधिक फ़्रेम एक ही बार में

org.xml.sax.SAXParseException: सामग्री prolog में अनुमति नहीं है

मेरे पास एक जावा आधारित वेब सेवा ग्राहक है जो जावा वेब सेवा से जुड़ा है (एक्सिस 1 ढांचा पर लागू)।

मुझे अपने लॉग फ़ाइल में अपवाद का पालन मिल रहा है:

Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog. at org.apache.xerces.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) at org.apache.xerces.util.ErrorHandlerWrapper.fatalError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLErrorReporter.reportError(Unknown Source) at org.apache.xerces.impl.XMLScanner.reportFatalError(Unknown Source) at org.apache.xerces.impl.XMLDocumentScannerImpl$PrologDispatcher.dispatch(Unknown Source) at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source) at org.apache.xerces.parsers.XMLParser.parse(Unknown Source) at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source) at javax.xml.parsers.SAXParser.parse(Unknown Source) at org.apache.axis.encoding.DeserializationContext.parse(DeserializationContext.java:227) at org.apache.axis.SOAPPart.getAsSOAPEnvelope(SOAPPart.java:696) at org.apache.axis.Message.getSOAPEnvelope(Message.java:435) at org.apache.ws.axis.security.WSDoAllReceiver.invoke(WSDoAllReceiver.java:114) at org.apache.axis.strategies.InvocationStrategy.visit(InvocationStrategy.java:32) at org.apache.axis.SimpleChain.doVisiting(SimpleChain.java:118) at org.apache.axis.SimpleChain.invoke(SimpleChain.java:83) at org.apache.axis.client.AxisClient.invoke(AxisClient.java:198) at org.apache.axis.client.Call.invokeEngine(Call.java:2784) at org.apache.axis.client.Call.invoke(Call.java:2767) at org.apache.axis.client.Call.invoke(Call.java:2443) at org.apache.axis.client.Call.invoke(Call.java:2366) at org.apache.axis.client.Call.invoke(Call.java:1812) 

वेब के समाधान से एकत्रित समाधान "org.xml.sax.SAXParseException: सामग्री prolog में अनुमति नहीं है"

यह अक्सर XML घोषणा से पहले एक सफेद स्थान के कारण होता है, लेकिन यह डैश या किसी भी वर्ण की तरह किसी पाठ का हो सकता है मैं अक्सर सफेद स्थान की वजह से कहता हूं क्योंकि लोग मानते हैं कि सफेद स्थान हमेशा अनदेखी होती है, लेकिन यह मामला यहां नहीं है।


एक और चीज जो आमतौर पर होती है वह यूटीएफ -8 बीओएम (बाइट ऑर्डर मार्क) होती है, जो एक्सएमएल घोषित होने से पहले अनुमति दी जाती है यदि दस्तावेज़ को बाइट्स की धारा के बजाय एक XML पार्सर के लिए वर्णों की एक धारा के रूप में सौंप दिया जाता है ।

ऐसा ही हो सकता है यदि स्कीमा फ़ाइलें (.xsd) का उपयोग एक्सएमएल फ़ाइल को मान्य करने के लिए किया जाता है और स्कीमा फ़ाइलों में से कोई एक UTF-8 BOM है

encoding="UTF-8" स्ट्रिंग के बीच में एक जगह जोड़ने की कोशिश करो ?> एक्सएमएल में प्रोओलॉग इस ब्रैकेट-प्रश्न चिह्न को दस्तावेज़ की शुरुआत में एलिमेटेड तत्व बताता है (जबकि टैग प्रोलॉग स्टैक ओवरफ्लू प्रोग्रामिंग भाषा को दर्शाता है)।

जोड़ा गया: क्या उस दस्तावेज के आपके भाग के सामने डैश है? यही त्रुटि होगी, जिसमें प्रतील के सामने डेटा होगा -<?xml version="1.0" encoding="UTF-8"?>

असल में यूरी जुबरेव के पोस्ट के अलावा

जब आप पारसर के लिए कोई भी एक्सएमएल फाइल नहीं देते हैं उदाहरण के लिए आप पास

 new File("C:/temp/abc") 

जब केवल सी: /temp/abc.xml फ़ाइल आपके फाइल सिस्टम पर मौजूद है

किसी भी स्थिति में

 builder = DocumentBuilderFactory.newInstance().newDocumentBuilder(); document = builder.parse(new File("C:/temp/abc")); 

या

 DOMParser parser = new DOMParser(); parser.parse("file:C:/temp/abc"); 

सभी एक ही त्रुटि संदेश देते हैं।

बहुत निराशाजनक बग, क्योंकि निम्नलिखित ट्रेस

 javax.servlet.ServletException at org.apache.xerces.parsers.DOMParser.parse(Unknown Source) ... Caused by: org.xml.sax.SAXParseException: Content is not allowed in prolog. ... 40 more 

'फाइल नाम के तथ्य के बारे में कुछ भी गलत नहीं है' या 'ऐसी फाइल मौजूद नहीं है' मेरे मामले में मुझे बिल्कुल सही XML फ़ाइल थी और मुझे वास्तविक समस्या का निर्धारण करने के लिए 2 दिन खर्च करना पड़ा था।

Freemarker के साथ एक XML दस्तावेज़ को पार्स करने की कोशिश करते समय मुझे एक ही समस्या (और इसे सुलझाया) था

XML फ़ाइल के शीर्षलेख से पहले मेरे पास कोई रिक्त स्थान नहीं था

समस्या तब होती है जब और केवल जब फ़ाइल एन्कोडिंग और XML एन्कोडिंग विशेषता भिन्न होती है (उदा। UTF-8 फ़ाइल के साथ शीर्ष पर यूटीएफ -16 विशेषता)।

इसलिए मुझे समस्या हल करने के दो तरीके थे:

  1. फ़ाइल के एन्कोडिंग को स्वयं बदलना
  2. हेडर UTF-16 को यूटीएफ -8 में बदलने

इसका अर्थ है कि एक्सएमएल गलत है या प्रतिक्रिया शरीर बिल्कुल भी XML दस्तावेज़ नहीं है।

बस एक डब्ल्यूएसडीएल में इसी तरह की समस्या को नीचे 4 घंटे बिताए। डब्लूएसडीएल ने एक एक्सएसडी का उपयोग किया जो दूसरे नाम स्थान XSD आयात करता है इस आयातित एक्सएसडी में निम्नलिखित शामिल हैं:

 <?xml version="1.0" encoding="UTF-8"?> <schema targetNamespace="http://www.xyz.com/Services/CommonTypes" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:CommonTypes="http://www.xyz.com/Services/CommonTypes"> <include schemaLocation=""></include> <complexType name="RequestType"> <.... 

ध्यान दें खाली तत्व include ! यह मेरे संकट की जड़ थी मुझे लगता है कि यह एगोर की फ़ाइल पर एक भिन्नता है, ऊपर की समस्या नहीं मिली

निराशाजनक त्रुटि रिपोर्टिंग +1 करने के लिए

मेरा जवाब शायद आप की मदद नहीं करेगा, लेकिन यह इस समस्या के साथ आम तौर पर मदद करता है

जब आप इस तरह के अपवाद देखते हैं, तो आपको अपनी हेक्स संपादक में अपनी एक्सएमएल फ़ाइल खोलने का प्रयास करना चाहिए और कुछ समय बाद आप उस पाठ की शुरुआत में अतिरिक्त बाइट देख सकते हैं, जो पाठ-संपादक नहीं दिखाए।

उन्हें हटाएं और आपके XML को पार्स किया जाएगा।

मेरे मामले में, 'एन्कोडिंग = "यूटीएफ -8"' एट्रिब्यूट को पूरी तरह से काम किया।

ऐसा लगता है कि एक चरित्र सेट एन्कोडिंग समस्या है, शायद क्योंकि आपकी फ़ाइल वास्तव में यूटीएफ -8 में नहीं है

चूंकि माइक सोकोलोव पहले से ही इसे इशारा कर चुके हैं, संभावित कारणों में से एक में टैग के पहले कुछ वर्ण / (जैसे एक सफेद स्थान) की उपस्थिति है।

यदि आपका इनपुट XML स्ट्रिंग (बाइट एरे के विपरीत) के रूप में पढ़ा जा रहा है, तो आप नीचे दिए गए कोड के साथ अपने इनपुट स्ट्रिंग की जगह का उपयोग कर सकते हैं ताकि यह सुनिश्चित किया जा सके कि XML टैग से पहले सभी 'आवश्यक-आवश्यक' वर्ण बंद हो जाएंगे।

 inputXML=inputXML.substring(inputXML.indexOf("<?xml")); 

आपको यह सुनिश्चित करने की ज़रूरत है कि इनपुट एक्सएमएल एक्सएमएल टैग के साथ शुरू होता है।

अगर सब कुछ विफल रहता है, तो फ़ाइल की शुरुआत में फ़ाइल को पहचानने वाली फ़ाइल की शुरुआत में कोई अजीब अक्षर [3 गैर प्रिंट करने योग्य वर्ण हैं, जो कि यूटीएफ -8 के रूप में पहचानते हैं] सुनिश्चित करने के लिए फ़ाइल को बाइनरी में खोलें। हमने ऐसा किया और कुछ पाया इसलिए हमने यूटीएफ -8 से एस्की तक फ़ाइल को परिवर्तित कर दिया और यह काम किया।

इसी मुद्दे के लिए, मैंने निम्न पंक्ति को हटा दिया है,

  File file = new File("c:\\file.xml"); InputStream inputStream= new FileInputStream(file); Reader reader = new InputStreamReader(inputStream,"UTF-8"); InputSource is = new InputSource(reader); is.setEncoding("UTF-8"); 

यह ठीक काम कर रहा है ऐसा इसलिए निश्चित नहीं है कि यूटीएफ -8 समस्या क्यों देता है मुझे सदमे में रखने के लिए, यह यूटीएफ -8 के लिए ठीक काम करता है

जावा * jdk1.6.0_13 * के साथ Windows-7 32 बिट और नेटबीन्स आईडीई का उपयोग कर रहा हूं। यह पता नहीं कैसे काम करता है

मैंने यहां दिए गए निर्देशों का पालन किया और मुझे एक ही त्रुटि मिली।

मैंने नोटपैड और एक्सएमएल नोटपैड में इसे हल करने के लिए कई चीजों की कोशिश की (यानी एन्कोडिंग बदलना, एक्सएमएल फाइल टाइप करने के बजाए इसे एपीटी चिपकाने के बजाय) लेकिन कुछ भी काम नहीं किया

समस्या को हल किया जब मैंने मेरी एक्सएमएल फ़ाइल को नोटपैड ++ (एन्कोडिंग -> यूटीएफ -8 बिना बीओएम) में सहेजा और सहेजा था।

उन सभी लोगों के लिए जो इस त्रुटि प्राप्त करते हैं: चेतावनी: Catalina.Cont / server.xml का उपयोग कर प्रारंभ करें: सामग्री को प्रोटोक में अनुमति नहीं है।

बहुत जानकारीपूर्ण नहीं है .. लेकिन वास्तव में इसका क्या मतलब है कि आपके conf / server.xml फ़ाइल में कचरा है

मैंने अन्य एक्सएमएल फाइलों में इस सटीक त्रुटि को देखा है .. इस त्रुटि का कारण पाठ संपादक जो कि कचरा का परिचय देता है, के साथ परिवर्तन कर सकता है।

जिस तरह से आप यह सत्यापित कर सकते हैं कि फ़ाइल में कचरा है या नहीं, इसे "हेक्स संपादक" के साथ खोलना है यदि आप इस स्ट्रिंग से पहले कोई भी अक्षर देखते हैं

  "<?xml version="1.0" encoding="UTF-8"?>" 

जैसे यह कचरा होगा

  "‰ŠŒ<?xml version="1.0" encoding="UTF-8"?>" 

यह तुम्हारी समस्या है …. समाधान एक अच्छा हेक्स संपादक का उपयोग करना है .. जो आपको विभिन्न प्रकार के एन्कोडिंग के साथ फाइल सहेजने की अनुमति देगा ..

तो बस इसे यूटीएफ -8 के रूप में सहेजें कुछ सिस्टम जो एक्सएमएल फ़ाइलों का उपयोग करते हैं, उन्हें यूटीएफ नं। BOM के रूप में सहेजे जाने की आवश्यकता हो सकती है जिसका अर्थ है "नो बाइट ऑर्डर मार्क"

उम्मीद है कि इससे वहां किसी को मदद मिलेगी!!

भविष्य के लिए इस पर एक अतिरिक्त विचार। इस बग को प्राप्त करना एक ऐसा मामला हो सकता है कि जब कोई सक्रिय विंडो के रूप में एक्सएमएल खिड़की है और ध्यान नहीं दे रहा है, तो वह केवल हटाए गए कुंजी या किसी अन्य कुंजी को बेतरतीब ढंग से मारता है। यह मेरे वेब अनुप्रयोग में struts.xml फ़ाइल से पहले हुआ है। अनाड़ी कोहनी …

मैं भी वही मिल रहा था

XML reader error: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[1,2] Message: Reference is not allowed in prolog.

, जब मेरा अनुप्रयोग एक RestFull Webservice कॉल के लिए एक XML प्रतिक्रिया बना रहा था एक्सएमएल प्रारूप बनाने के दौरान स्ट्रिंग I ने <और> और <और> के साथ <और> फिर से त्रुटि समाप्त हो गई, और मुझे उचित प्रतिक्रिया मिल रही थी। निश्चित नहीं कि यह कैसे काम करता है लेकिन यह काम करता है

नमूना :

 String body = "<ns:addNumbersResponse xmlns:ns=\"http://java.duke.org\"><ns:return>" +sum +"</ns:return></ns:addNumbersResponse>"; 

मेरी भी यही समस्या थी।

सबसे पहले मैंने स्थानीय फाइल को एक्सएमएल फ़ाइल डाउनलोड किया है और मेरे पास पोर्टल सर्वर पर आयात फ़ाइल के दौरान Content is not allowed in prolog यहां तक ​​कि नेत्रहीन फ़ाइल मुझे अच्छी लग रही थी लेकिन किसी तरह यह भ्रष्ट था।

इसलिए मैं एक ही फाइल को पुनः डाउनलोड कर रहा हूं और कोशिश की और यह काम किया।

हमें हाल ही में एक ही समस्या थी और यह एक खराब यूआरएल का मामला साबित हुआ और परिणामस्वरूप एक मानक 403 एचटीपी प्रतिक्रिया (जो स्पष्ट रूप से वैध एक्सएमएल क्लाइंट की तलाश में नहीं था) मैं विस्तार को साझा करने जा रहा हूं, अगर किसी व्यक्ति को इस संदर्भ में चलना चाहिए:

यह एक स्प्रिंग आधारित वेब एप्लिकेशन था जिसमें एक "जेक्सडब्ल्यूपीएस पोर्ट प्रोक्सीफैक्टबेन बीन" बीन को एक दूरस्थ पोर्ट के लिए प्रॉक्सी का पर्दाफाश करने के लिए कॉन्फ़िगर किया गया था।

 <bean id="ourPortJaxProxyService" class="org.springframework.remoting.jaxws.JaxWsPortProxyFactoryBean" p:serviceInterface="com.amir.OurServiceSoapPortWs" p:wsdlDocumentUrl="${END_POINT_BASE_URL}/OurService?wsdl" p:namespaceUri="http://amir.com/jaxws" p:serviceName="OurService" p:portName="OurSoapPort" /> 

"END_POINT_BASE_URL" एक वातावरण चर कॉन्फ़िगर किया गया है जो टोकेकैट इंस्टेंस के "setenv.sh" है जो वेब एप्लिकेशन को होस्ट करता है। फ़ाइल की सामग्री कुछ ऐसा है:

 export END_POINT_BASE_URL="http://localhost:9001/BusinessAppServices" #export END_POINT_BASE_URL="http://localhost:8765/BusinessAppServices" 

लापता ";" प्रत्येक पंक्ति के बाद से दोषपूर्ण यूआरएल के कारण और इस प्रकार बुरा प्रतिक्रिया। इसका अर्थ है, "BusinessAppServices / OurService? Wsdl" के बजाय URL में "/" से पहले एक सीआर था "टीसीपी / आईपी मॉनिटर" समस्या का समस्या निवारण करते समय काफी आसान था।

मेरे मामले में मुझे यह त्रुटि मिली क्योंकि मैं जिस एपीआई का इस्तेमाल करता था वह एक्सएमएल या JSON प्रारूप में डेटा वापस कर सकता था। जब मैंने इसे ब्राउज़र का उपयोग करके परीक्षण किया, तो इसे XML स्वरूप में चूक दिया गया, लेकिन जब मैंने एक जावा एप्लिकेशन से एक ही कॉल का उपयोग किया, तो एपीआई ने जेएसओएन स्वरूपित प्रतिक्रिया वापस ली, जिससे स्वाभाविक रूप से एक पार्सिंग त्रुटि शुरू हुई।

यहां तक ​​कि मुझे भी इसी तरह की समस्या का सामना करना पड़ा था। कारण फाइल की शुरुआत में कुछ कचरा चरित्र था।

फिक्स: फाइल में किसी पाठ संपादक (सब्लाइम टेक्स्ट पर परीक्षण) में बस किसी भी इंडेंट को हटा दें अगर फ़ाइल में कोई भी कॉपी करें और फ़ाइल की सभी सामग्री की प्रतिलिपि नई फ़ाइल में पेस्ट करें और इसे सहेज लें। बस!। जब मैंने नई फ़ाइल चलायी, तो बिना किसी पार्सिंग त्रुटियों के चलते

मैंने दिनेशकुमार का कोड लिया और मेरी XML फ़ाइल को सही तरीके से सत्यापित करने के लिए संशोधित किया:

 import org.apache.log4j.Logger; public class Myclass{ private static final Logger LOGGER = Logger.getLogger(Myclass.class); /** * Validate XML file against Schemas XSD in pathEsquema directory * @param pathEsquema directory that contains XSD Schemas to validate * @param pathFileXML XML file to validate * @throws BusinessException if it throws any Exception */ public static void validarXML(String pathEsquema, String pathFileXML) throws BusinessException{ String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; String nameFileXSD = "file.xsd"; String MY_SCHEMA1 = pathEsquema+nameFileXSD); ParserErrorHandler parserErrorHandler; try{ SchemaFactory schemaFactory = SchemaFactory.newInstance(W3C_XML_SCHEMA); Source [] source = { new StreamSource(new File(MY_SCHEMA1)) }; Schema schemaGrammar = schemaFactory.newSchema(source); Validator schemaValidator = schemaGrammar.newValidator(); schemaValidator.setErrorHandler( parserErrorHandler= new ParserErrorHandler()); /** validate xml instance against the grammar. */ File file = new File(pathFileXML); InputStream isS= new FileInputStream(file); Reader reader = new InputStreamReader(isS,"UTF-8"); schemaValidator.validate(new StreamSource(reader)); if(parserErrorHandler.getErrorHandler().isEmpty()&& parserErrorHandler.getFatalErrorHandler().isEmpty()){ if(!parserErrorHandler.getWarningHandler().isEmpty()){ LOGGER.info( String.format("WARNING validate XML:[%s] Descripcion:[%s]", pathFileXML,parserErrorHandler.getWarningHandler())); }else{ LOGGER.info( String.format("OK validate XML:[%s]", pathFileXML)); } }else{ throw new BusinessException( String.format("Error validate XML:[%s], FatalError:[%s], Error:[%s]", pathFileXML, parserErrorHandler.getFatalErrorHandler(), parserErrorHandler.getErrorHandler())); } } catch(SAXParseException e){ throw new BusinessException(String.format("Error validate XML:[%s], SAXParseException:[%s]", pathFileXML,e.getMessage()),e); } catch (SAXException e){ throw new BusinessException(String.format("Error validate XML:[%s], SAXException:[%s]", pathFileXML,e.getMessage()),e); } catch (IOException e) { throw new BusinessException(String.format("Error validate XML:[%s], IOException:[%s]",pathFileXML,e.getMessage()),e); } } } 

कभी-कभी यह कोड है, एक्सएमएल नहीं

निम्नलिखित कोड,

 Document doc = dBuilder.parse(new InputSource(new StringReader("file.xml"))); 

भी इस त्रुटि में परिणाम होगा,

[घातक त्रुटि]: 1: 1: सामग्री को prolog.org.xml.sax.SAXParseException में अनुमति नहीं है; लाइन नंबर: 1; स्तंभ संख्या: 1; प्रोलॉग में सामग्री की अनुमति नहीं है।

क्योंकि यह स्ट्रिंग की "file.xml" को पार्स करने का प्रयास करता है, "file.xml" (फाइल। file.xml फ़ाइल की सामग्री नहीं) और असफल रहने के कारण "file.xml" स्ट्रिंग के रूप में अच्छी तरह से XML नहीं बना है।

फिक्स: StringReader() निकालें:

 Document doc = dBuilder.parse(new InputSource("file.xml")); 

इसी तरह, गंदे बफर समस्या वास्तविक एक्सएमएल से पहले अवशिष्ट जंक छोड़ सकती है। यदि आपने अपने एक्सएमएल को सावधानीपूर्वक जाँच कर लिया है और अभी भी यह त्रुटि मिलती है, तो पार्सर्स को दिए गए सही सामग्री को लॉग इन करें; कभी-कभी जो वास्तव में किया जा रहा है (होने की कोशिश की जाती है) आश्चर्यजनक है

इस तरह से फ़ॉर्म बनाने के लिए अपना दस्तावेज़ सेट करें:

 <?xml version="1.0" encoding="UTF-8" ?> <root> %children% </root>