nested exception: content is not allowed in prolog.
xml編碼錯誤:
左邊報錯的xml,右邊正常的xml檔案,比較工具beyond compare 4
2、對於webservice接收來的xmlstring的處理,使用如下方法,修改xml字串
/**
* 檢查xml字串是否有非法字首
*@param xmlstr
*@return
*/public string checkxmlstr(string xmlstr)else
if(index == -1)
return xmlstr;
}
3、為了程式的健壯性,可以在讀檔案的時候,加入判斷,判斷是否有bom,有的話,在生成字串的時候,將其刪除,方法如下:
/**
* 檢查byte陣列 是否有bom頭
* utf8檔案都有乙個3位元組的頭,為「ef bb bf」(稱為bom--byte order mark)
*@param bytes
*@return
*/private
static
boolean
checkbom( byte bytes )}}
"是否有bom:"+isbom);
return isbom;
}/** * 將檔案讀取為utf-8編碼字串
*@param filepath
*@return
*/public string getxmlfiletext(string filepath) catch (unsupportedencodingexception e)
}else catch (unsupportedencodingexception e)
}//return checkxmlstr(retxmlstr);
return retxmlstr;
}// 將檔案讀成byte陣列
public
byte filetobytearray(string filepath)
fileinputstream = new fileinputstream(file);
in = new bufferedinputstream(fileinputstream);
out = new bytearrayoutputstream();
byte temp = new
byte[1024 * 1024]; //每次讀取 1m
int size = 0;
while ((size = in.read(temp)) != -1)
bt = out.tobytearray();
// for(int i = 0; i < bt.length; i++)
} catch (exception e) finally catch (ioexception e)
}return bt;
}
問題分析:
某些文字編輯器或者window系統,在儲存xml時,會在檔案開頭自動加上bom,dom4j會無法識別這個檔案流。有人說1.3不能識別、1.6可以正常識別帶bom的utf-8檔案,但是我用的就是dom4j1.6,也會報這個錯誤。
XML中DOCTYPE欄位的解析
dtd宣告始終以 doctype開頭,空一格後跟著文件根元素的名稱,如果是內部dtd,則再空一格出現,在中括號中是文件型別定義的內容.而對於外部dtd,則又分為私有dtd與公共dtd,私有dtd使用system表示,接著是外部dtd的url.而公共dtd則使用public,接著是dtd公共名稱,接著...
XML解析中的namespace初探
初學者在解析xml檔案的時候最容易遇到的問題恐怕就是xml的namespace了,本文旨在對namespace做乙個簡要的介紹。namespace的意義無需多說,和c c 等高階語言一樣,xml同樣面臨大量檔案放在一起的時候變數重名的問題,所以要用namespace把名字相同意義不同的變數隔離開。本...
PHP 中的 XML 拉模式解析
研究與 php 5 在一起的 xmlreader 庫,它使 php 頁面能夠以高效的流模式來處理 xml 文件。php 5 引入了新的類 xmlreader,用於讀取可擴充套件標記語言 extensible markup language,xml 與 xml 或文件物件模型 document obj...