Fix SAXParseException: Content Not Allowed in Prolog

Answered using AI by Vibe Coding

Code Question:

org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 1; Content is not allowed in prolog. ဒီ error တက်နေပါတယ် ပြင်ပေးပါ

Code Solution:

ဒီအမှား Content is not allowed in prolog ဆိုတာက
XML file ရဲ့ အစမှာ မဖြစ်သင့်တဲ့ character တစ်ခုခု (ဥပမာ space, tab, BOM, invisible character) ရှိနေလို့ ဖြစ်ပါတယ်။
ဒါကြောင့် XML file ရဲ့ တထွေတည်း (very first) character ကို ကြည့်ဖို့လိုပါတယ်။


✅ ပြင်ဆင်ရမယ့် အဆင့်

1️⃣ File ရဲ့ အစကို စစ်ဆေးပါ

  • XML file ကို Notepad++ သို့ VS Code နဲ့ ဖွင့်ပါ။
  • Show All Characters သုံးပြီး invisible character (ဥပမာ BOM, space, tab) ရှိမရှိ စစ်ပါ။
  • Line 1, Column 1 မှာ <?xml version="1.0" encoding="UTF-8"?> ပြန်စရမယ်။

2️⃣ BOM ဖယ်ဖို့ (Byte Order Mark)

  • Notepad++ မှာ:
    • EncodingConvert to UTF-8 (without BOM)
    • ပြီးရင် save လုပ်ပါ။

3️⃣ Java ကနေ XML ဖတ်တဲ့ code စစ်ပါ

  • File path မှန်မမှန်
  • XML string ကို parse မယ်ဆိုရင် trim() လုပ်ပြီး parse ပါ။
String xml = xmlString.trim(); // BOM တို့ invisible character ဖယ်ဖို့
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
Document doc = builder.parse(new InputSource(new StringReader(xml)));

❗ ဥပမာ မှားနေတဲ့ XML အစ

  <!-- space တွေ ရှိနေတယ် -->
<?xml version="1.0" encoding="UTF-8"?>
<root>...</root>

✅ မှန်ကန်တဲ့ XML အစ

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

📌 အကျဉ်းချုပ်

  • BOM ဖယ်ပါ။
  • Invisible character မရှိအောင် စစ်ပါ။
  • XML file ရဲ့ အစ ကို စစ်ပါ။

လိုအပ်ရင် XML file ရဲ့ ပထမဆုံး 5-10 line ကို copy/paste ပြီး ဒီမှာပေးပေးပါ။