org.xML.sax.SAXParseException: প্রোগলগুলিতে সামগ্রীর অনুমতি নেই


161

আমার একটি জাভা ভিত্তিক ওয়েব পরিষেবা ক্লায়েন্ট জাভা ওয়েব পরিষেবায় সংযুক্ত আছে (এক্সিস 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)

11
আপনি পার্স করার চেষ্টা করছেন এমন এক্সএমএল যদি আমাদের দেখিয়ে দেয় তবে এটি সহায়তা করবে। (কেবল প্রথম কয়েকটি লাইনগুলি আমি আশা করি))
স্টিফেন সি

ধন্যবাদ স্টিফেন, আমি এক্সআইএস কাঠামো থেকে এক্সএমএল অনুরোধটি পুনরুদ্ধার এবং এটি এখানে আটকানোর চেষ্টা করছি। সুতরাং উপরের ত্রুটি সম্পর্কে সাধারণ বোঝাটি এক্সএমএলটি সুগঠিত নয়।
ag112

আমার এই সমস্যাটি ছিল কারণ আমি xML ফাইলের চেয়ে xML ফাইলের স্ট্রিং নামটিকে স্ট্রিং হিসাবে রূপান্তর করার চেষ্টা করছিলাম! : পি
গাʀʀʏ

উত্তর:


242

এটি প্রায়শই এক্সএমএল ঘোষণার আগে একটি সাদা স্থান দ্বারা ঘটে থাকে তবে এটি কোনও ড্যাশ বা কোনও চরিত্রের মতো কোনও পাঠ্য হতে পারে । আমি বলি প্রায়শই সাদা স্থানের কারণে ঘটে কারণ লোকেরা মনে করে যে সাদা স্থান সবসময়ই উপেক্ষা করা হয়, তবে এখানে এটি হয় না।


আরেকটা জিনিস যে ঘটবে একটি হল হল UTF-8 BOM (বাইট অর্ডার চিহ্ন), যা করা হয় সামনে এক্সএমএল ঘোষণা হোয়াইটস্পেস হিসাবে গণ্য করা যাবে যদি ডকুমেন্ট একটি XML পার্সার অক্ষরের একটি প্রবাহ যেমন বদলে বাইটের একটি প্রবাহ যেমন হস্তান্তর করা হয় অনুমতি ।

যদি স্কিমা ফাইলগুলি (.xsd) এক্সএমএল ফাইল যাচাই করতে ব্যবহৃত হয় এবং স্কিমা ফাইলগুলির একটিতে ইউটিএফ -8 বিওএম থাকে তবে একই ঘটতে পারে ।


17
আমার মতো প্রত্যেকের জন্য, যিনি জন হামফ্রেসের সাথে কী করতে হবে তা বোঝার লড়াই করে - w00te এর পরামর্শ: পরিবর্তন Document document = documentBuilder.parse(new InputSource(new StringReader(xml)))করুনDocument document = documentBuilder.parse(new InputSource(new ByteArrayInputStream(xml.getBytes("UTF-8"))))
RealMan

32

আসলে ইউরি জুবরেভ পোস্ট ছাড়াও

আপনি যখন পার্সারে কোনও অস্তিত্বের এক্সএমএল ফাইলটি পাস করেন। উদাহরণস্বরূপ আপনি পাস

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

'ফাইলের নামটি ভুল' বা 'এ জাতীয় ফাইলের অস্তিত্ব নেই' এর সত্যতা সম্পর্কে কিছু বলেন না। আমার ক্ষেত্রে আমার একেবারে সঠিক এক্সএমএল ফাইল ছিল এবং আসল সমস্যাটি নির্ধারণ করতে 2 দিন ব্যয় করতে হয়েছিল।


ফাইল নাম, এফডাব্লুআইডাবির পরিবর্তে একটি ডিরেক্টরিকে বিশ্লেষণের চেষ্টা করার সাথে একই।
রজারডপ্যাক

... @ এজোর কারণেই সবাই এক্সএমএলকে ঘৃণা করে। এরকম বোকা ব্যর্থতার জন্য 2 দিনের কাজ হারাতে ..
Gewure

একেবারে একমত @ জিউউর :) এটি ২০১২ সালের কিছু প্রাচীন পোস্ট ছিল এবং আমি এটি সম্পর্কে ভুলেও যাই, তবে সত্য
Egor

1
এটি যখন ঘটে আপনার সঠিক পথ থাকে তবে বিশেষ চিহ্ন সহ, যেমন: সি: \ # মাইফোল্ডার \ মাই.এক্সএমএল ফাইল উপস্থিত থাকে, তবে "#" এক্সএমএল পার্সারে সমস্যা আনায় ... নিজেই জাভা, পাশাপাশি এম $ উইন্ডোজ, এই ফোল্ডারটির নাম নিয়ে কোনও সমস্যা নেই .... খুব খারাপ ব্যতিক্রম বার্তার আচরণ ....
অ্যালেক্স

26

encoding="UTF-8"প্রোলগ এবং টার্মিনেটিংয়ের মধ্যে স্ট্রিংয়ের মধ্যে একটি স্থান যুক্ত করার চেষ্টা করুন ?>। এক্সএমএলে প্রোলোলজটি নথির শুরুতে এই বন্ধনী-প্রশ্ন চিহ্ন সীমিত উপাদানকে মনোনীত করে (যখন স্ট্যাকওভারফ্লোতে ট্যাগ প্রোলোগ প্রোগ্রামিং ভাষা বোঝায়)।

যোগ করা হয়েছে: ড্যাশটি কি আপনার ডকুমেন্টের প্রলোগ অংশের সামনে রয়েছে? প্রলোগের সামনে ডেটা থাকাতে এটি ত্রুটি হবে -<?xml version="1.0" encoding="UTF-8"?>


1
+1 টি। আমি খুঁজে পেয়েছি যে কিছু এক্সএমএল পারজার এই ব্যতিক্রম বমি করার এমনকি যখন এক্সএমএল Prolog স্পেস রয়েছে - তাই আমার মনে হয় এটা স্পষ্টভাবে মূল্য পরীক্ষণ কিছুই পূর্বে হয় <?xml ver...বিট।

11

ফ্রিমার্কারের সাথে একটি এক্সএমএল নথি পার্স করার চেষ্টা করার সময় আমার একই সমস্যা ছিল (এবং এটি সমাধান হয়েছে)।

এক্সএমএল ফাইলের শিরোনামের আগে আমার কোনও স্থান ছিল না।

সমস্যাটি তখনই ঘটে যখন ফাইল এনকোডিং এবং এক্সএমএল এনকোডিং বৈশিষ্ট্য আলাদা হয় occurs (উদাহরণস্বরূপ: শিরোনামে UTF-16 বৈশিষ্ট্যযুক্ত UTF-8 ফাইল)।

সুতরাং আমার কাছে সমস্যা সমাধানের দুটি উপায় ছিল:

  1. ফাইল নিজেই এনকোডিং পরিবর্তন
  2. শিরোনাম UTF-16 থেকে UTF-8 এ পরিবর্তন করা হচ্ছে

1
আমি অনুমান করি যে সাধারণভাবে পার্সার চরিত্রের এনকোডিং সম্পর্কে বিরোধী তথ্য প্রাপ্তিতে যে কোনও ক্ষেত্রেই এই সমস্যার কারণ হতে পারে।
রাইডওয়াল্ড

9

এর অর্থ XML টি ত্রুটিযুক্ত বা প্রতিক্রিয়া বডিটি XML নথি নয়।


আমি চেক করেছি এবং দেখে মনে হচ্ছে যে এক্সএমএলটি খুব ভালভাবে গঠিত। এখানে স্ন্যাপশটটি দেওয়া হচ্ছে: - <? এক্সএমএল সংস্করণ = "1.0" এনকোডিং = "ইউটিএফ -8"?> <সোপেনভ: এনভেল্ফ xMLns: soapenv = " স্কিমাস.এক্সএমএলএসএপি.আর.এসএপ / এনভেলপ " xmlns: xsd = " w3.org/ 2001 / XMLSchema "xMLns: xsi =" w3.org/2001/XMLSchema-instance "> <সোপেনভ: শিরোনাম> <ডাব্লুএসএস: সুরক্ষা xmlns: wsse =" ডকস.ওয়েসিস- ওপেন.আর। / Wss/2004/01/ " সোপেনভ: অবশ্যইউন্ডারস্ট্যান্ড = "1"> .... </ wsse: সুরক্ষা> </ সোপেনভ: শিরোনাম> <সোপেনভ: বডি>। এক্সএক্স .. </ সোপেনভ: বডি> </ সোপেনভ: খাম>
ag112

1
হ্যাঁ, সামনে যদি কোনও ড্যাশ থাকে তবে এটি এক্সএমএলটি ভেঙে দেবে।
ইউরি জুবরেভ

7

ডাব্লুএসডিএলে অনুরূপ সমস্যাটি সন্ধান করতে সবেমাত্র 4 ঘন্টা ব্যয় করেছে। ডাব্লুএসডিএল একটি এক্সএসডি ব্যবহার করেছে যা অন্য নামস্থান এক্সএসডি আমদানি করে। এই আমদানিকৃত এক্সএসডিতে নিম্নলিখিতগুলি রয়েছে:

<?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উপাদান নোট করুন ! এটাই ছিল আমার দুঃখের মূল। আমি অনুমান করি যে এটি Egor এর ফাইলে সমস্যাটি উপরে পাওয়া যায় নি।

হতাশাজনক ত্রুটি প্রতিবেদন +1।


4

আমার ক্ষেত্রে, 'এনকোডিং = "ইউটিএফ -8" বৈশিষ্ট্যটি সরানো পুরোপুরি কাজ করেছে।

দেখে মনে হচ্ছে এটি কোনও অক্ষর সেট এনকোডিংয়ের সমস্যা, কারণ সম্ভবত আপনার ফাইলটি ইউটিএফ -8-তে নেই।


4

আমার উত্তর সম্ভবত আপনাকে সাহায্য করবে না, তবে এটি সাধারণত এই সমস্যাটিতে সহায়তা করে।

আপনি যখন এই ধরণের ব্যতিক্রম দেখেন তখন আপনাকে আপনার এক্সএমএল ফাইলটি কোনও হেক্স সম্পাদক সম্পাদনায় খোলার চেষ্টা করা উচিত এবং কিছু সময় আপনি ফাইলের শুরুতে অতিরিক্ত বাইটগুলি দেখতে পাবেন যা পাঠ্য-সম্পাদকটি দেখায় না।

এগুলি মুছুন এবং আপনার এক্সএমএল বিশ্লেষণ করা হবে।


4

কখনও কখনও এটি কোড, এক্সএমএল নয়

নিম্নলিখিত কোড,

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"স্ট্রিং হিসাবে এক্সএমএল সুগঠিত নয়।

ফিক্স: সরান StringReader():

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

একইভাবে, নোংরা বাফার সমস্যাগুলি প্রকৃত এক্সএমএল এর আগে অবশিষ্টাংশের জঞ্জাল ছেড়ে দিতে পারে। আপনি যদি সাবধানতার সাথে আপনার এক্সএমএল পরীক্ষা করেছেন এবং এখনও এই ত্রুটিটি পেয়ে থাকেন তবে পার্সারে সঠিক লিখিত সামগ্রীটি লগ ইন করুন; কখনও কখনও আসলে যা পার্স করা হচ্ছে (যা হওয়ার চেষ্টা করা হয়েছে) অবাক করা।


1
এই সমাধানটি সঠিক পথে পরিচালিত হয়েছে যেহেতু আমি কোডটিতে applicaionContext.xmlপাথ যুক্ত করতে ভুলে গিয়েছিলাম , এবং কোডটি পরীক্ষা করা যাচ্ছিল না কেবল এক্সএমএল ফাইলটিতে ত্রুটি খুঁজছিল
মৃন্ময়

3

প্রথমে পরিষ্কার প্রকল্প, তারপরে পুনর্নির্মাণ প্রকল্প। আমিও একই সমস্যার মুখোমুখি ছিলাম। এর পরে সবকিছু ঠিকঠাক এসেছিল।


2

অন্য সমস্ত কিছু যদি ব্যর্থ হয় তবে ফাইলের শুরুতে কোনও মজাদার অক্ষর নেই [3 প্রারম্ভিক ফাইলের শুরুতে প্রিন্টেবল অক্ষর নেই যে ফাইলটি utf-8] ফাইলটি শুরুর সময় বাইনারি করে ফাইলটি খুলুন। আমরা এটি করেছি এবং কিছু খুঁজে পেয়েছি। সুতরাং আমরা ফাইলটি utf-8 থেকে ascii তে রূপান্তর করেছি এবং এটি কাজ করেছে।


2

একই সমস্যার জন্য, আমি নিম্নলিখিত লাইনটি সরিয়েছি,

  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 * এর সাথে উইন্ডোজ -7 32 বিট এবং নেটবিয়ান আইডিই ব্যবহার করছি । কীভাবে এটি কাজ করে সে সম্পর্কে কোনও ধারণা নেই।


2

মাইক সোকলভ যেমন ইতিমধ্যে এটি উল্লেখ করেছেন, সম্ভাব্য কারণগুলির মধ্যে একটি হ'ল ট্যাগের আগে কিছু চরিত্র / গুলি (যেমন একটি সাদা স্থান) উপস্থিতি।

যদি আপনার ইনপুট এক্সএমএলটি স্ট্রিং হিসাবে পড়ছে (বাইট অ্যারের বিপরীতে) তবে এক্সএমএল ট্যাগটি মুছে ফেলার আগে সমস্ত 'অ-প্রয়োজনীয়' অক্ষরগুলি নিশ্চিত করার জন্য আপনি নীচের কোড দিয়ে আপনার ইনপুট স্ট্রিংটি প্রতিস্থাপন ব্যবহার করতে পারেন।

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

আপনাকে নিশ্চিত হওয়া দরকার যে ইনপুট এক্সএমএল যদিও xML ট্যাগ দিয়ে শুরু হয়।


2

আমার ক্ষেত্রে আমার অ্যাপ্লিকেশনটির ওয়েব.এক্সএমএল এর অতিরিক্ত স্থান রয়েছে এমনকি আমি মুছে ফেলার পরেও কাজ না করে আমাকে ছাগগুলি এবং এর সংশোধনগুলি ফিরিয়ে নিতে হয়েছিল এবং হ্যাঁ আমি আমার টমকেটে লগিং.প্রেপার্টি এবং ওয়েব.এক্সএমএল নিয়ে খেলছিলাম তবে আমি আবারও ফিরে আসার পরেও ত্রুটি দেখাতে থাকল যাতে এটি ঠিক হয়ে যায়))।

অতিরিক্ত স্থান

সুনির্দিষ্ট হওয়ার জন্য আমি org.apache.catalina.filters.ExpiresFilter.level = ফাইন স্ট্যাক যোগ করার চেষ্টা করলাম লগিং সম্পর্কিত কিছু প্রবাহের উপরে rop


1

আমি এখানে পাওয়া নির্দেশাবলী অনুসরণ করেছি এবং আমি একই ত্রুটি পেয়েছি।

আমি এটি সমাধানের জন্য বেশ কয়েকটি জিনিস চেষ্টা করেছি (যেমন এনকোডিং পরিবর্তন করা, এটি এক্সপিএমএল ফাইলটি টাইপ করে এটি অনুলিপি-আটকে দেওয়ার চেয়ে নয়) নোটপ্যাড এবং এক্সএমএল নোটপ্যাডে কিন্তু কিছুই কার্যকর হয়নি।

নোটপ্যাড ++ (এনওডিং -> বিওএম ছাড়াই utf-8) এ আমার এক্সএমএল ফাইলটি সম্পাদনা এবং সংরক্ষণ করার পরে সমস্যাটি সমাধান হয়ে যায়


1

যারা এই ত্রুটিটি পান তাদের সকলের জন্য: সতর্কতা: কনফাল / সার্ভার.এক্সএমএল ব্যবহার করে ক্যাটালিনা.স্টার্ট: প্রোগলগুলিতে সামগ্রীর অনুমতি নেই।

খুব তথ্যবহুল নয় .. তবে এর আসল অর্থটি হ'ল আপনার কনফারেন্স / সার্ভার.এক্সএমএল ফাইলটিতে আবর্জনা রয়েছে।

অন্যান্য এক্সএমএল ফাইলগুলিতে আমি এই সঠিক ত্রুটিটি দেখেছি .. এই ত্রুটিটি কোনও পাঠ্য সম্পাদক দ্বারা পরিবর্তন করে যা আবর্জনা প্রবর্তন করে be

আপনি যেভাবে ফাইলটিতে আবর্জনা রেখেছেন তা যাচাই করতে পারবেন তা হ'ল "এইচএক্স সম্পাদক" দিয়ে এটি খোলার আগে যদি আপনি এই স্ট্রিংয়ের আগে কোনও অক্ষর দেখতে পান

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

এই যেমন আবর্জনা হবে

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

এটিই আপনার সমস্যা .... সমাধানটি হ'ল একটি ভাল এইচএক্স সম্পাদক ব্যবহার করা উচিত .. এমন একটি যা আপনাকে বিভিন্ন ধরণের এনকোডিং সহ ফাইলগুলি সংরক্ষণ করতে দেয় ..

তারপরে এটি কেবল ইউটিএফ -8 হিসাবে সংরক্ষণ করুন। কিছু সিস্টেম যা এক্সএমএল ফাইলগুলি ব্যবহার করে তাদের এটি ইউটিএফ NO BOM হিসাবে সংরক্ষণের প্রয়োজন হতে পারে যার অর্থ "NO বাইট অর্ডার চিহ্ন" দিয়ে

আশা করছি এটা ওখানে কাওকে সাহায্য করবে!!


1

আমার জন্য, একটি বিল্ড-> পরিষ্কার সব কিছু ঠিক করা হয়েছে!


1

ইউনিক্স / লিনাক্স সিস্টেমগুলিতে বিওএম সমস্যা সমাধানের জন্য:

  1. অযাচিত BOM অক্ষর আছে কিনা তা পরীক্ষা করুন: hexdump -C myfile.xml | more ফাইলটির শুরুতে একটি অযাচিত BOM অক্ষর উপস্থিত হবে...<?xml>

  2. বিকল্পভাবে, না file myfile.xml। একটি বিওএম অক্ষর সহ একটি ফাইল উপস্থিত হবে:myfile.xml: XML 1.0 document text, UTF-8 Unicode (with BOM) text

  3. এর সাথে একটি ফাইল ঠিক করুন: tail -c +4 myfile.xml > temp.xml && mv temp.xml myfile.xml

  4. ফাইলটি স্যানিটাইজ করা হয়েছে তা পরীক্ষা করতে 1 বা 2 পুনরাবৃত্তি করুন। view myfile.xmlবিষয়বস্তু চেক করতে সম্ভবত বোধগম্যও রয়েছেন।

এক্সএমএল ফাইলগুলির পুরো ফোল্ডারটি স্যানিটাইজ করার জন্য এখানে বাশ স্ক্রিপ্ট রয়েছে:

#!/usr/bin/env bash

# This script is to sanitise XML files to remove any BOM characters

has_bom() { head -c3 "$1" | LC_ALL=C grep -qe '\xef\xbb\xbf'; }

for filename in *.xml ; do
  if has_bom ${filename}; then
    tail -c +4 ${filename} > temp.xml
    mv temp.xml ${filename}
  fi
done

0

ভবিষ্যতের জন্য এটি সম্পর্কে একটি অতিরিক্ত চিন্তা সক্রিয় প্রদর্শন হিসাবে একটি এক্সএমএল উইন্ডো রয়েছে এবং মনোযোগ দিচ্ছে না, তখন এই বাগটি পাওয়াটা এলোমেলোভাবে মুছুন কী বা অন্য কোনও কীকে হিট করে। আমার ওয়েব অ্যাপ্লিকেশনটিতে struts.xML ফাইলের সাথে আমার আগে এটি ঘটেছে। আনাড়ি কনুই ...


আমি নিশ্চিত করেছিলাম যে আমি কোনও কীগুলি হিট করছি না
ম্যাড-ডি

0

আমিও একই হচ্ছিলাম

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

, যখন আমার অ্যাপ্লিকেশনটি একটি রেস্টফুল ওয়েবসার্ভিস কলের জন্য একটি এক্সএমএল প্রতিক্রিয়া তৈরি করছে। স্ট্রিং এক্সএমএল ফর্ম্যাটটি তৈরি করার সময় আমি & lt এবং & gt কে <এবং> এর সাথে প্রতিস্থাপন করেছি তখন ত্রুটিটি চলে গেছে, এবং আমি যথাযথ প্রতিক্রিয়া পাচ্ছি। এটি কীভাবে কাজ করেছে তা নিশ্চিত নয় তবে এটি কাজ করেছিল।

নমুনা :

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

0

আমারো একই ইস্যু ছিল.

প্রথমে আমি এক্সএমএল ফাইলটি স্থানীয় ডেস্কটপে ডাউনলোড করেছিলাম Content is not allowed in prologএবং পোর্টাল সার্ভারে ফাইল আমদানির সময় পেয়েছি । এমনকি দৃশ্যত ফাইলটি আমার কাছে ভাল লাগছিল তবে কোনওভাবে এটি দূষিত হয়েছিল।

সুতরাং আমি একই ফাইলটি আবার ডাউনলোড করেছি এবং একইরকম চেষ্টা করেছি এবং এটি কার্যকর হয়েছে।


0

আমাদের সম্প্রতি একই সমস্যা হয়েছিল এবং এটি একটি খারাপ URL এর ফলস্বরূপ পরিণত হয়েছিল এবং ফলস্বরূপ একটি স্ট্যান্ডার্ড 403 HTTP প্রতিক্রিয়া (যা স্পষ্টত ক্লায়েন্টটি সন্ধান করছে এমন বৈধ এক্সএমএল নয়)। একই প্রসঙ্গে যদি কেউ এই সমস্যাটিতে চলে যায় তবে আমি বিশদটি ভাগ করতে যাচ্ছি:

এটি একটি বসন্ত ভিত্তিক ওয়েব অ্যাপ্লিকেশন ছিল যেখানে একটি "JaxWsPortProxyFactoryBean" বিন একটি প্রত্যন্ত বন্দরের জন্য প্রক্সি প্রকাশ করার জন্য কনফিগার করা হয়েছিল।

<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"

হারানো ";" প্রতিটি লাইনের পরে ত্রুটিযুক্ত ইউআরএল এবং এর ফলে খারাপ প্রতিক্রিয়া ঘটে। তা হল, "বিজনেস অ্যাপস সার্ভিস / আওয়ার সার্ভিস? ডাব্লুএসডিএল" এর পরিবর্তে "/" এর আগে ইউআরএলটির একটি সিআর ছিল। সমস্যা সমাধানের সময় "টিসিপি / আইপি মনিটর" বেশ কার্যকর ছিল।


0

আমার ক্ষেত্রে আমি এই ত্রুটিটি পেয়েছি কারণ আমি যে এপিআই ব্যবহার করেছি তা XML বা JSON ফর্ম্যাটে ডেটা ফেরত দিতে পারে। আমি যখন এটি ব্রাউজার ব্যবহার করে পরীক্ষা করেছি, এটি এক্সএমএল ফর্ম্যাটে ডিফল্ট হয়েছিল, তবে আমি যখন জাভা অ্যাপ্লিকেশন থেকে একই কলটি ডাকছিলাম, তখন API এ JSON ফর্ম্যাট প্রতিক্রিয়াটি ফিরে পেয়েছিল, যা স্বাভাবিকভাবে একটি পার্সিং ত্রুটি ঘটায়।


0

এমনকি আমিও একই ধরণের সমস্যার মুখোমুখি হয়েছি। ফাইলটির শুরুতে কারণটি ছিল কিছু আবর্জনা চরিত্র।

ফিক্স: কেবল একটি টেক্সট এডিটরে ফাইলটি খুলুন (সাব্লাইম টেক্সটে পরীক্ষিত) ফাইলের মধ্যে যে কোনও ইনডেন্ট মুছে ফেলুন এবং ফাইলের সমস্ত সামগ্রী একটি নতুন ফাইলে কপি করুন এবং সেভ করুন। এটাই!. আমি যখন নতুন ফাইলটি চালালাম তখন এটি কোনও পার্সিং ত্রুটি ছাড়াই চলে।


0

আমি দিনেশকুমারের কোড নিয়েছি এবং আমার এক্সএমএল ফাইলটি সঠিকভাবে যাচাই করতে সংশোধন করেছি:

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);
	}
	
}

}


0

আপনার দস্তাবেজটি এভাবে তৈরি করতে সেট করুন:

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

0

বসন্ত নিয়েও আমার একই সমস্যা ছিল

MarshallingMessageConverter

এবং প্রাক-প্রসেস কোড দ্বারা।

মেবির কারও কারও কারও কারও কারও কারও কারও প্রয়োজন নেই: বাইটসেসেজ # রিডবাইট - পঠন বাইট .. এবং আমি ভুলে গেছি যে পড়া এক দিক নির্দেশনা। দুবার পড়তে পারবেন না।


0

Apache.commons.io এ বিএমআইএনপুট স্ট্রিম দিয়ে চেষ্টা করুন:

public static <T> T getContent(Class<T> instance, SchemaType schemaType, InputStream stream) throws JAXBException, SAXException, IOException {

    JAXBContext context = JAXBContext.newInstance(instance);
    Unmarshaller unmarshaller = context.createUnmarshaller();
    Reader reader = new InputStreamReader(new BOMInputStream(stream), "UTF-8");

    JAXBElement<T> entry = unmarshaller.unmarshal(new StreamSource(reader), instance);

    return entry.getValue();
}

0

info.plistআমার ম্যাকটিতে ফাইলটি পার্স করার সময় আমারও একই সমস্যা ছিল । যাইহোক, নিম্নলিখিত কমান্ডটি ব্যবহার করে সমস্যাটি স্থির করা হয়েছে যা ফাইলটিকে একটি এক্সএমএলে পরিণত করেছে।

plutil -convert xml1 info.plist

আশা করি যে কাউকে সাহায্য করবে।


0

কিছু এক্সএমএল ফাইলগুলির সাথে আমারও একই সমস্যা ছিল, আমি এএনএসআই এনকোডিং (উইন্ডোজ-1252) দিয়ে ফাইলটি পড়া এবং পাইথনের একটি ছোট স্ক্রিপ্টের সাথে ইউটিএফ -8 এনকোডিং সহ একটি ফাইল লেখার সমাধান করেছি। আমি নোটপ্যাড ++ ব্যবহার করার চেষ্টা করেছি কিন্তু আমার সাফল্য হয়নি:

import os
import sys

path = os.path.dirname(__file__)

file_name = 'my_input_file.xml'

if __name__ == "__main__":
    with open(os.path.join(path, './' + file_name), 'r', encoding='cp1252') as f1:
        lines = f1.read()
        f2 = open(os.path.join(path, './' + 'my_output_file.xml'), 'w', encoding='utf-8')
        f2.write(lines)
        f2.close()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.