相关疑难解决方法(0)

如何使用JAXB2.0禁用DTD获取

我正在尝试使用JAXB取消一些我首先使用xjc创建的XML.我不想做就解组任何验证,但即使我已经停用根据与JAXB文档验证u.setSchema(null);,但这并没有阻止了FileNotFoundException,当它试图运行,并不能找到的模式被抛出.

JAXBContext jc = JAXBContext.newInstance("blast");
Unmarshaller u = jc.createUnmarshaller();
u.setSchema(null);
return u.unmarshal(blast)
Run Code Online (Sandbox Code Playgroud)

我已经看到类似的问题,通过设置apache属性http://apache.org/xml/features/validation/schema来禁用SAX解析验证false,但是我无法让Unmarshaller使用我自己的sax解析器.

java validation dtd jaxb

21
推荐指数
2
解决办法
2万
查看次数

让JAXB更快

我有一个8兆的文件.使用JAXB进行编组需要1082ms,使用DOM需要862ms,使用SAX需要438ms.这是使用JDK 1.6的所有默认值,没有使用诸如使用woodstox之类的额外配置.

为了从JAXB获得更好的性能,我试着让它使用SAX解析...

FileReader fr = new FileReader("myfile.xml");
JAXBContext jc = JAXBContext.newInstance(MyObjectList.class);
Unmarshaller unmarshaller = jc.createUnmarshaller();

XMLInputFactory xmlif = XMLInputFactory.newInstance();
XMLEventReader xmler = xmlif.createXMLEventReader(fr);

long beginTime = System.currentTimeMillis();
MyObjectList obj = (MyObjectList)unmarshaller.unmarshal(xmler);
long endTime = System.currentTimeMillis();
Run Code Online (Sandbox Code Playgroud)

这使它变得更慢 - 3207ms.

我的问题是:1.如何让JAXB更快?2.我怎样才能100%确定它使用的底层解析机制?

xml performance jaxb jaxp

12
推荐指数
2
解决办法
1万
查看次数

标签 统计

jaxb ×2

dtd ×1

java ×1

jaxp ×1

performance ×1

validation ×1

xml ×1