JAXB解析xml時忽略名稱空間的方法
用JAXB解析xml並轉換為實體類時,如果xml帶有名稱空間,尤其是整個xml都使用匿名名稱空間時,則需要在實體類的每個屬性的註解中新增namespace引數,不僅使程式碼變得惡劣,而且不靈活(名稱空間改變則所有實體類註解也跟著對應修改)。
解決方法可能有很多,如果xml的元素都使用匿名名稱空間,可以考慮在JAXB轉換前將xml名稱空間忽略。
public static ConnectivityDeliveryResponse unmarshall(String response) throws JAXBException, ParserConfigurationException, SAXException {
if(txLogger.isDebugEnabled()) {
txLogger.debug(response);
}
JAXBContext jaxbContext = JAXBContext.newInstance(CONNECTIVITY_PACKAGE);
Unmarshaller unmarshaller = jaxbContext.createUnmarshaller();
StringReader reader = new StringReader(response);
SAXParserFactory sax = SAXParserFactory.newInstance();
sax.setNamespaceAware(false);
XMLReader xmlReader = sax.newSAXParser().getXMLReader();
Source source = new SAXSource(xmlReader, new InputSource(reader));
ConnectivityDeliveryResponse reponse = (ConnectivityDeliveryResponse)unmarshaller.unmarshal(source);
return reponse ;
}
相關文章
- JAXB名稱空間及名稱空間字首處理
- JAXB玩轉名稱空間
- 使用p名稱空間和c名稱空間的XML快捷方式XML
- jaxb解析xmlXML
- Spring名稱空間解析Spring
- PHP名稱空間概念解析PHP
- XML和Schema名稱空間詳解XML
- Python名稱空間例項解析Python
- 名稱空間
- PHP 名稱空間PHP
- PHP名稱空間PHP
- vuex名稱空間Vue
- jQuery 名稱空間jQuery
- JavaScript 名稱空間JavaScript
- JavaScript 中的名稱空間JavaScript
- Python 的名稱空間Python
- python名稱空間Python
- C++名稱空間C++
- 更改模型名稱空間模型
- 全域性名稱空間
- C++ 名稱空間C++
- Python 名稱空間Python
- 11. 名稱空間
- ts---名稱空間
- Objective-C 的名稱空間Object
- PHP 核心特性 - 名稱空間PHP
- 使用名稱空間:基礎
- ros節點名稱空間ROS
- System.Web 名稱空間Web
- Python名稱空間包Python
- Python中名稱空間是什麼?名稱空間生命週期是多久?Python
- php名稱空間的呼叫順序PHP
- spring框架中的名稱空間Spring框架
- jquery的事件名稱空間詳解jQuery事件
- c# MySqlConnection的名稱空間C#MySql
- C++名稱空間的使用 (轉)C++
- XML - JAXB示例XML
- PHP 獲取不帶名稱空間的類名PHP