XML ফরম্যাটার ও মিনিফায়ার
ফরম্যাটfast-xml-parser দিয়ে XML সুন্দর করুন বা সংকুচিত করুন। ইনডেন্টেশন, অ্যাট্রিবিউট এবং সেলফ-ক্লোজিং ট্যাগ স্বাভাবিক করে। বিশুদ্ধ XML প্রক্রিয়াকরণ — কোনো ফরম্যাট রূপান্তর নয়।
দূরবর্তী URL আনা হয় না; আপনার JSON সরাসরি পেস্ট করুন।
এই পৃষ্ঠায়
XML ফরম্যাটার কী?#
একটি XML ফরম্যাটার এমন একটি নথিকে পুনরায় প্রবাহিত করে যা তার কাঠামো হারিয়েছে — এক সারিতে ডাম্প করা একটি SOAP প্রতিক্রিয়া, একটি প্রক্সির মাধ্যমে টানা একটি RSS ফিড যা হোয়াইটস্পেস সংকুচিত করেছে, বা একটি টেক্সট বক্সে এডিট করা একটি কনফিগ ফাইল যা ইনডেন্টেশন সংরক্ষণ করেনি — এবং তা পুনরায় ইনডেন্ট করে যাতে এলিমেন্ট হায়ারার্কি দৃশ্যমান হয়। উল্টোটি, মিনিফাইং, প্রতিটি বাইট ইন্টার-ট্যাগ হোয়াইটস্পেস ছিনিয়ে নেয় যাতে নথিটি পরিবহনের জন্য যতটা সম্ভব ছোট হয়।
XML রাউন্ড-ট্রিপিংকে দেখায় তার চেয়ে কঠিন করে তোলে এই যে < এবং >-এ একটি নিষ্ঠাহীন ফাইন্ড-এবং-রিপ্লেস তথ্য ধ্বংস করে। এলিমেন্টের ক্রম, <?xml?> ডিক্লারেশন, মন্তব্য, <?xml-stylesheet?>-এর মতো প্রসেসিং নির্দেশনা, অ্যাট্রিবিউট ক্রম, এবং <a></a> এবং <a/>-এর মধ্যে পার্থক্য — সবই অর্থ বহন করে। এই পৃষ্ঠাটি fast-xml-parser preserve-order মোডে ব্যবহার করে, যা নথিটিকে একটি ক্রমানুসার গাছে পার্স করে এবং বিশ্বস্তভাবে পুনর্নির্মাণ করে — তাই ফরম্যাটিং হলো আপনার নথির একটি নরমালাইজড ভিউ, পুনরায় সাজানো নয়। এটিও এই টুলটিকে JSON/XML কনভার্টার থেকে আলাদা করে: এটি বিশুদ্ধ XML-to-XML রাউন্ড-ট্রিপিং করে, কখনো ডেটা ফরম্যাট পরিবর্তন না করে।
ব্যবহারবিধি#
- বাঁদিকের ইনপুট পেইনে আপনার XML পেস্ট করুন। প্লেসহোল্ডারটি একটি ন্যূনতম
<?xml?>নথি দেখায় যদি আপনার একটি শুরুর পয়েন্ট প্রয়োজন হয়, বা নমুনা ক্লিক করুন। - টুলবারে একটি মোড বোতাম বেছে নিন:
- ফরম্যাট — পার্স করুন, তারপর ইনডেন্টেশন এবং লাইন বিরতি সহ পুনর্নির্মাণ করুন। খালি এলিমেন্টগুলো সেলফ-ক্লোজিং ফর্মে সংকুচিত হয় (
<a></a>হয়ে যায়<a/>), অ্যাট্রিবিউটগুলো সংরক্ষিত হয়, মন্তব্য এবং ডিক্লারেশন টিকে থাকে। - মিনিফাই — পার্স করুন, তারপর কোনো ইন্টার-ট্যাগ হোয়াইটস্পেস বা শেষের নিউলাইন ছাড়াই একটি একক কম্প্যাক্ট লাইন হিসেবে পুনর্নির্মাণ করুন।
- ফরম্যাট — পার্স করুন, তারপর ইনডেন্টেশন এবং লাইন বিরতি সহ পুনর্নির্মাণ করুন। খালি এলিমেন্টগুলো সেলফ-ক্লোজিং ফর্মে সংকুচিত হয় (
- ফরম্যাট মোডে, একটি ইন্ডেন্ট বেছে নিন: ২, ৪, বা ট্যাব।
- আউটপুট পেইনে ফলাফল পড়ুন। হেডার অক্ষরে আউটপুট আকার দেখায়; এটি নিতে কপি ব্যবহার করুন। মুছুন উভয় পেইন রিসেট করে।
আপনার ইনপুট যদি সুগঠিত না হয় — একটি অনসমাপ্ত ট্যাগ, একটি বিচ্যুত & যা & হওয়া উচিত — স্ট্যাটাস বার একটি বেস্ট-এফর্ট সারি এবং কলাম সহ ত্রুটি রিপোর্ট করে, যাতে আপনি একটি খালি আউটপুটের দিকে তাকিয়ে না থেকে সমস্যাটি খুঁজে পান।
মূল বৈশিষ্ট্য#
- বিশ্বস্ত রাউন্ড ট্রিপ। preserve-order পার্সিং ফরম্যাট/মিনিফাই চক্র জুড়ে নথির ক্রম,
<?xml?>ডিক্লারেশন, মন্তব্য এবং প্রসেসিং নির্দেশনা রাখে। - উভয় মোড একটি পার্সার শেয়ার করে। ফরম্যাট এবং মিনিফাই অভিন্নভাবে পার্স করে; তারা শুধুমাত্র ভিন্নভাবে আউটপুট দেয় যেভাবে বিল্ডার টেক্সট নির্গত করে। তাই মিনিফাই সফল হলে, ফরম্যাটও হবে, এবং উল্টোটাও।
- সেলফ-ক্লোজিং নরমালাইজেশন।
<a></a>-এর মতো খালি এলিমেন্টগুলো<a/>-এ সংকুচিত হয়, যা ক্যানোনিক্যাল কম্প্যাক্ট ফর্ম এবং diff করার সময় হোয়াইটস্পেস পার্থক্যগুলো স্পষ্ট করে তোলে। - মানগুলো স্ট্রিং থাকে। পার্সারটি
parseTagValue: falseদিয়ে কনফিগার করা, তাইtrue-এর একটি টেক্সট নোড স্ট্রিং"true"থাকে এবং007থাকে"007"। কোনো নীরব টাইপ রূপান্তর নেই যা ফেরার পথে আপনাকে অবাক করবে। - বড় ইনপুটগুলো মূল থ্রেড থেকে দূরে সামলায়। 1 MB-এর বড় নথিগুলো একটি Web Worker-এর মাধ্যমে রুট করা হয়, তাই পার্স করার সময় পৃষ্ঠাটি প্রতিক্রিয়াশীল থাকে। ছোট ইনপুটগুলো ইনলাইন চলে।
- কঠোরভাবে ক্লায়েন্ট-সাইড। পার্সার পৃষ্ঠায় বান্ডল করা; আপনার XML কখনো ব্রাউজার ছাড়ে না।
ব্যবহারিক উদাহরণ#
দুটি সারিতে ঠাসা একটি ছোট কনফিগারেশন নথি:
ইনপুট:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"></feature></config>
২ স্পেস সহ ফরম্যাট ক্লিক করুন:
<?xml version="1.0"?>
<config>
<server host="example.com" port="443"/>
<feature name="cache"/>
<feature name="logs"/>
</config>
দুটি জিনিস দাঁড়িয়ে যায়। <?xml version="1.0"?> ডিক্লারেশনটি নথির শীর্ষে রাউন্ড ট্রিপ টিকে আছে। এবং <feature name="logs"></feature> এবং ইতিমধ্যে-সেলফ-ক্লোজিং <feature name="cache"/> উভয়ই এখন <feature name="logs"/> হিসেবে দেখা যায় — খালি এলিমেন্টগুলো সেলফ-ক্লোজিং ফর্মে নরমালাইজ করা হয়েছে, তাই একই আকৃতির দুটি ফিচার আসলে একই রকম দেখায়। মূল ইনপুটে মিনিফাই ক্লিক করুন এবং আপনি পরিবহন ফর্ম পান:
<?xml version="1.0"?><config><server host="example.com" port="443"/><feature name="cache"/><feature name="logs"/></config>
প্রসাধনমূলক হোয়াইটস্পেসের প্রতিটি বাইট চলে গেছে, কিন্তু <server>-এ অ্যাট্রিবিউট ক্রম অস্পর্শিত এবং ডিক্লারেশনটি এখনও সেখানে আছে।
প্রশ্নোত্তর#
এই টুল এবং JSON/XML কনভার্টারের মধ্যে পার্থক্য কী?#
এই টুলটি হলো XML ইন, XML আউট — এটি একটি XML নথিকে বিউটিফাই বা মিনিফাই করে এবং আপনাকে XML ফিরিয়ে দেয়। এই সাইটের JSON/XML কনভার্টার দুটি ফরম্যাটের মধ্যে অনুবাদ করে, XML-কে একটি JSON অবজেক্ট গাছে বা উল্টোটা রূপান্তর করে। এই পৃষ্ঠাটি ব্যবহার করুন যখন আপনি একই ফরম্যাট চান, শুধু আরও ভালো আকৃতিতে; কনভার্টার ব্যবহার করুন যখন আপনি আসলে ফরম্যাট পরিবর্তন করতে চান।
ফরম্যাটিং কি আমার মন্তব্য সংরক্ষণ করে?#
হ্যাঁ। পার্সিংয়ের সময় মন্তব্যগুলো ক্রমানুসার গাছে ধরা হয় এবং বিল্ডার দ্বারা পুনরায় নির্গত হয়, তাই <!-- note --> ফরম্যাট এবং মিনিফাই উভয়কেই টিকে থাকে। প্রসেসিং নির্দেশনা <?xml-stylesheet?>-ও সংরক্ষিত।
ত্রুটির অবস্থান কেন কখনো আনুমানিক?#
অন্তর্নিহিত পার্সার প্রতিটি ব্যর্থতা মোডের জন্য ক্যারেক্টার অবস্থান প্রকাশ করে না, তাই কিছু ত্রুটির জন্য এই পৃষ্ঠাটি পার্সারের বার্তা থেকে বের করা একটি বেস্ট-এফর্ট সারি এবং কলাম রিপোর্ট করতে পারে। একটি অনুপস্থিত ক্লোজ ট্যাগের জন্য অবস্থানটি সাধারণত নির্ভুল; আরও বিরল পার্স ব্যর্থতার জন্য এটি সারি 1-এ ডিফল্ট হতে পারে। ত্রুটি বার্তাটি নিজেই সর্বদা সম্পূর্ণ দেখানো হয়, যা সাধারণত ত্রুটিস্থল খুঁজে পাওয়ার জন্য যথেষ্ট।
এটি কি অনেক বড় XML ফাইল সামলাতে পারে?#
হ্যাঁ, আপনার ব্রাউজারের মেমরি সীমা পর্যন্ত। 1 MB-এর উপরের ইনপুটগুলো একটি Web Worker-এর ভেতরে পার্স করা হয় যাতে UI ফ্রিজ না করে। শত শত মেগাবাইটের নথির জন্য, পার্সিংয়ে লক্ষণীয় সময় এবং মেমরি লাগবে বলে আশা করুন — এটি একটি ব্রাউজার টুল, একটি স্ট্রিমিং সার্ভার নয়।