Jaxb解析xml(带命名空间)相关联的属性 “xsi:NamespaceSchemaLocation” 的前缀 “xsi” 未绑定。 - sidihuo的专栏 - CSDN博客
https://blog.csdn.net/sidihuo/article/details/50478178
Jaxb解析xml(带命名空间)相关联的属性 “xsi:NamespaceSchemaLocation” 的前缀 “xsi” 未绑定。
final JAXBContext context = JAXBContext.newInstance(XlvdDiagram.class);
final Unmarshaller unmarshaller = context.createUnmarshaller();
final FileReader reader = new FileReader(new File(path));
final SAXParserFactory sax = SAXParserFactory.newInstance();
sax.setNamespaceAware(false);// 忽略命名空间
final XMLReader xmlReader = sax.newSAXParser().getXMLReader();
final SAXSource saxSource = new SAXSource(xmlReader, new InputSource(reader));
final Object object = unmarshaller.unmarshal(saxSource);
---------------------
作者:四滴火
来源:CSDN
原文:https://blog.csdn.net/sidihuo/article/details/50478178
版权声明:本文为博主原创文章,转载请附上博文链接!
我的报错信息:
在将SOAP规范的xml转为java bean时报错了:
javax.xml.bind.UnmarshalException
with linked exception:
[org.xml.sax.SAXParseException; lineNumber: 2; columnNumber: 334; 元素 “soap:Envelope” 的前缀 “soap” 未绑定。]
xml到java bean的转换方法:
@SuppressWarnings("unchecked")
public static <T> T xml2Object(String xmlStr, Class<T> c)
throws JAXBException, SAXException, ParserConfigurationException {
JAXBContext context = JAXBContext.newInstance(c);
Unmarshaller unmarshaller = context.createUnmarshaller();
T t = (T) unmarshaller.unmarshal(new StringReader(xmlStr));
return t;
}
按照上述博客介绍的修改xml到java bean的转换方法:
/**
* xml转换成JavaBean
*
* @param xml xml格式字符串
* @param t 待转化的对象
* @return 转化后的对象
* @throws Exception JAXBException
*/
@SuppressWarnings("unchecked")
public static <T> T convertToJavaBean(String xml, Class<T> t) throws Exception {
T obj = null;
StringReader reader = null;
try {
JAXBContext context = JAXBContext.newInstance(t);
Unmarshaller unmarshaller = context.createUnmarshaller();
reader = new StringReader(xml);
SAXParserFactory sax = SAXParserFactory.newInstance();
sax.setNamespaceAware(false); // 忽略命名空间
XMLReader xmlReader = sax.newSAXParser().getXMLReader();
Source source = new SAXSource(xmlReader, new InputSource(reader));
obj = (T) unmarshaller.unmarshal(source);
return obj;
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("解析SOAP报文失败!");
}finally {
if(reader!=null){
reader.close();
}
}
}