A XMLBean Tip
前段時間我使用XMLBean來生成xml串,我的過程是這樣的:1、使用XMLSpy寫好XSD,然後使用XMLBean幫我生成Java Class。2、使用這些Java Class來創建Document,數據來源則是數據庫 3、獲得生成的document的XML String。3、適應Web Service將這些XML String發送到遠程服務器。4、遠程服務器會根據XSD對收到的XML進行校驗,以檢查是否符合規範。 結果問題來了,遠程服務器(程序是另外一個公司的人寫的,但使用的是相同的XSD)總是校驗不通過。經過檢查,我發現XMLBean生成的XML Element的節點標籤和XSD中定義的並不完全一致,比如我在XSD中定義了:
<?XML:NAMESPACE PREFIX = XS />而生成的xml中則是
//create and set xml node value
//set XmlOptions
XmlOptions opt = new XmlOptions();
Map map = new HashMap();
map.put("my Xml namespace","xmlnsNameInXml");
map.put("my element tag name","elementTagNameInXml");
//set use implicit namespaces
opt.setSaveImplicitNamespaces(map);
//get xml string
String xmlString = doc.xmlText(opt);
這樣設置了以後,XMLBean就不會自作聰明的把XSD裏面我們定義的比較長的Element Tag Name和XML NS設置爲比較簡略的縮寫名稱了。