“Content is not allowed in prolog” when parsing perfectly valid XML on GAE

后端 未结 13 2015
抹茶落季
抹茶落季 2020-11-27 15:20

I\'ve been beating my head against this absolutely infuriating bug for the last 48 hours, so I thought I\'d finally throw in the towel and try asking here before I throw my

相关标签:
13条回答
  • 2020-11-27 15:55

    I had issue while inspecting the xml file in notepad++ and saving the file, though I had the top utf-8 xml tag as <?xml version="1.0" encoding="utf-8"?>

    Got fixed by saving the file in notpad++ with Encoding(Tab) > Encode in UTF-8:selected (was Encode in UTF-8-BOM)

    0 讨论(0)
  • 2020-11-27 16:00

    In the spirit of "just delete all those weird characters before the <?xml", here's my Java code, which works well with input via a BufferedReader:

        BufferedReader test = new BufferedReader(new InputStreamReader(fisTest));
        test.mark(4);
        while (true) {
            int earlyChar = test.read();
            System.out.println(earlyChar);
            if (earlyChar == 60) {
                test.reset();
                break;
            } else {
                test.mark(4);
            }
        }
    

    FWIW, the bytes I was seeing are (in decimal): 239, 187, 191.

    0 讨论(0)
  • 2020-11-27 16:04

    I was facing the same issue. In my case XML files were generated from c# program and feeded into AS400 for further processing. After some analysis identified that I was using UTF8 encoding while generating XML files whereas javac(in AS400) uses "UTF8 without BOM". So, had to write extra code similar to mentioned below:

    //create encoding with no BOM
    Encoding outputEnc = new UTF8Encoding(false); 
    //open file with encoding
    TextWriter file = new StreamWriter(filePath, false, outputEnc);           
    
    file.Write(doc.InnerXml);
    file.Flush();
    file.Close(); // save and close it
    
    0 讨论(0)
  • 2020-11-27 16:09

    In my instance of the problem, the solution was to replace german umlauts (äöü) with their HTML-equivalents...

    0 讨论(0)
  • 2020-11-27 16:10

    I was facing the same problem called "Content is not allowed in prolog" in my xml file.

    Solution

    Initially my root folder was '#Filename'.

    When i removed the first character '#' ,the error got resolved.

    No need of removing the #filename... Try in this way..

    Instead of passing a File or URL object to the unmarshaller method, use a FileInputStream.

    File myFile = new File("........");
    Object obj = unmarshaller.unmarshal(new FileInputStream(myFile));
    
    0 讨论(0)
  • 2020-11-27 16:13

    This error message is always caused by the invalid XML content in the beginning element. For example, extra small dot “.” in the beginning of XML element.

    Any characters before the “<?xml….” will cause above “org.xml.sax.SAXParseException: Content is not allowed in prolog” error message.

    A small dot “.” before the “<?xml….

    To fix it, just delete all those weird characters before the “<?xml“.

    Ref: http://www.mkyong.com/java/sax-error-content-is-not-allowed-in-prolog/

    0 讨论(0)
提交回复
热议问题