jaxb 里如何去掉命名空间

 我来答
好口子
2016-08-29 · 好口子,手把手教你维护好你的征信!
好口子
采纳数:29399 获赞数:66629

向TA提问 私信TA
展开全部

用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 ;  
     }
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式