java解析xml 前言中不允许有内容_关于xml加载提示: Error on line 1 of document : 前言中不允许有内容...
我是在java中做的相關(guān)測試, 首先粘貼下報錯:
讀取xml配置文件:xmls\property.xml
org.dom4j.DocumentException: Error on line1of document : 前言中不允許有內(nèi)容。 Nested exception: 前言中不允許有內(nèi)容。
at org.dom4j.io.SAXReader.read(SAXReader.java:482)
at org.dom4j.io.SAXReader.read(SAXReader.java:365)
at com.core.util.XmlTemplateUtil.loadXmlTemplateByIO(XmlTemplateUtil.java:93)
at com.game.impl.TemplateDataManager2.initFromDisk(TemplateDataManager2.java:61)
at start.Main.(Main.java:55)
at start.Main.main(Main.java:128)
Nested exception:
org.xml.sax.SAXParseException; lineNumber:1; columnNumber: 1; 前言中不允許有內(nèi)容。
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source)
at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source)
at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(Unknown Source)
at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown Source)
at org.dom4j.io.SAXReader.read(SAXReader.java:465)
at org.dom4j.io.SAXReader.read(SAXReader.java:365)
at com.core.util.XmlTemplateUtil.loadXmlTemplateByIO(XmlTemplateUtil.java:93)
at com.game.impl.TemplateDataManager2.initFromDisk(TemplateDataManager2.java:61)
at start.Main.(Main.java:55)
at start.Main.main(Main.java:128)
這個提示直白點(diǎn)就是說xml文件中的開頭,還有別的內(nèi)容. 網(wǎng)上有很多類似問題的解決方案也是與此相關(guān)的.但是描述并不準(zhǔn)確. 可能他真的是在xml文件的開頭誤寫了一個什么東西, 在他刪除之后,他的這個問題隨之解決. 但是你可能翻來覆去檢查了N次, 并沒有看到有什么多余的字符. 可能你就轉(zhuǎn)向選擇了另外一種解決方案:更換編碼格式為ANSI.
到這里, 引用下別人介紹過的相關(guān)知識和解決方法:
BOM——Byte Order Mark,就是字節(jié)序標(biāo)記
在UCS 編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,所以不應(yīng)該出現(xiàn)在實際傳輸中。UCS規(guī)范建議我們在傳輸字節(jié)流前,
先傳輸字符"ZERO WIDTH NO-BREAK SPACE"。這樣如果接收者收到FEFF,就表明這個字節(jié)流是Big-Endian的;如果收到FFFE,就表明這個字節(jié)流是Little-Endian的。
因此字符"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。
UTF-8不需要BOM來表明字節(jié)順序,但可以用BOM來表明編碼方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF。所以如果接收者收到以EF BB BF開頭的字節(jié)流,就知道這是UTF-8編碼了。
UTF-8編碼的文件中,BOM占三個字節(jié)。如果用記事本把一個文本文件另存為UTF-8編碼方式的話,用UE打開這個文件,切換到十六進(jìn)制編輯狀態(tài)就可以看到開頭的FFFE了。這是個標(biāo)識UTF-8編碼文件的好辦法,軟件通過BOM來識別這個文件是否是UTF-8編碼,很多軟件還要求讀入的文件必須帶BOM。可是,還是有很多軟件不能識別BOM。
在Firefox早期的版本里,擴(kuò)展是不能有BOM的,不過Firefox 1.5以后的版本已經(jīng)開始支持BOM了。現(xiàn)在又發(fā)現(xiàn),PHP也不支持BOM。PHP在設(shè)計時就沒有考慮BOM的問題,也就是說他不會忽略UTF-8編碼的文件開頭BOM的那三個字符。
由于必須在在Bo-Blog的wiki看到,同樣使用PHP的Bo-Blog也一樣受到BOM的困擾。其中有提到另一個麻煩:“受COOKIE送出機(jī)制的限制,在這些文件開頭已經(jīng)有BOM的文件中,COOKIE無法送出(因為在COOKIE送出前PHP已經(jīng)送出了文件頭),所以登入和登出功能失效。一切依賴COOKIE、SESSION實現(xiàn)的功能全部無效。”這個應(yīng)該就是Wordpress后臺出現(xiàn)空白頁面的原因了,因為任何一個被執(zhí)行的文件包含了BOM,這三個字符都將被送出,導(dǎo)致依賴cookies和session的功能失效。
解決的辦法: 如果只包含英文字符(或者說ASCII編碼內(nèi)的字符),就把文件存成ASCII碼方式吧。
用UE等編輯器的話,點(diǎn)文件->轉(zhuǎn)換->UTF-8轉(zhuǎn)ASCII,或者在另存為里選擇ASCII編碼。
如果是DOS格式的行尾符,可以用記事本打開,點(diǎn)另存為,選ASCII編碼。
如果包含中文字符的話,可以用UE的另存為功能,選擇“UTF-8 無 BOM”即可。
對于notepad++ 來說, 直接在菜單欄上選擇 "格式->以utf-8無BOM格式編碼"
看到這里就了解了, 你選擇的編碼格式就是這種帶著BOM標(biāo)記的編碼格式. 在很多文本編輯器里, 另存為utf-8時,你可能沒注意到他是存的是帶BOM標(biāo)記的utf-8還是不帶BOM標(biāo)記的utf-8. 所以,不是一定要更改成為ANSI格式,"utf-8 無BOM"類型也是可以解決問題的.
總結(jié)
以上是生活随笔為你收集整理的java解析xml 前言中不允许有内容_关于xml加载提示: Error on line 1 of document : 前言中不允许有内容...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 武汉新华电脑学校计算机协会,第十一届大学
- 下一篇: 阳台山之登山攻略