当前位置: 首页 > 面试题库 >

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

劳研
2023-03-14
问题内容

我正在尝试使用JAXB解压我最初使用xjc创建的一些XML。我不想对解组进行任何验证,但是即使我已根据JAXB文档使用禁用了验证u.setSchema(null);,但这并不能防止FileNotFoundException在尝试运行并找不到架构时引发验证。

JAXBContext jc = JAXBContext.newInstance("blast");
Unmarshaller u = jc.createUnmarshaller();
u.setSchema(null);
return u.unmarshal(blast)

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


问题答案:

以下是示例代码,演示了如何获取 JAXB(JSR-222)
实现以使用SAX解析器:

import java.io.FileReader;
import javax.xml.XMLConstants;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.Unmarshaller;
import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.sax.SAXSource;

import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;

public class Demo {

    public static void main(String[] args) throws Exception {
        JAXBContext jc = JAXBContext.newInstance(Foo.class);

        SAXParserFactory spf = SAXParserFactory.newInstance();
        spf.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
        XMLReader xmlReader = spf.newSAXParser().getXMLReader();
        InputSource inputSource = new InputSource(new FileReader("input.xml"));
        SAXSource source = new SAXSource(xmlReader, inputSource);

        Unmarshaller unmarshaller = jc.createUnmarshaller();
        Foo foo = (Foo) unmarshaller.unmarshal(source);
        System.out.println(foo.getValue());
    }

}


 类似资料:
  • 问题内容: 我想使用JAXB从dtd文件生成Java类。 dtd看起来像这样: 当使用JAXB生成类时,我得到以下内容: 对象工厂 内容 人 人数 组 团体 在内容类中,使所有人员和组退缩的方法是 有什么我可以在DTD文件改变,因此Java类的产生将使并且在分离的Java类,所以中检索所有的个人和团体将是使调用和respectivly? 问题答案: 在他的回应中,mavrav似乎告诉我们使用DTD

  • 问题内容: 我想知道在使用selenium时如何禁用javascript,以便可以测试服务器端验证。 我找到了这篇文章,但我不知道该怎么做。就像我制作此javascript文件,然后呢? http://thom.org.uk/2006/03/12/disabling-javascript-from- selenium/ 问题答案: 编辑 在此期间,确实出现了更好的替代方法,请参见其他答案,例如 如

  • 问题内容: 我最近一直在使用sqlite4java库。我想我已经弄清楚了。唯一令我困扰的是,我不知道如何使用该库关闭自动提交。谁能帮忙吗?一个代码示例将不胜感激。 在此先感谢Boro 问题答案: Jefromi和king_nak是正确的-您只需要发出开始和结束事务的SQL语句即可。

  • 问题内容: 我想知道如何禁用Redis的持久性。这里提到了这样做的可能性:http : //redis.io/topics/persistence。我的意思是和那里描述的完全一样。任何帮助将不胜感激! 问题答案: 要禁用Redis中的 所有 数据持久性,请执行以下操作: 通过将配置指令设置为(默认值)来禁用AOF 通过禁用(注释掉)所有配置指令来禁用RDB快照(默认情况下定义了3个) 这些配置指令

  • 问题内容: 我了解到,您可以仅通过将HTML按钮附加到其标签来禁用(使其实际上不可点击),但不能将其作为属性,如下所示: 由于此设置不是属性,因此如何通过JavaScript动态添加此设置以禁用以前启用的按钮? 问题答案: 由于此设置不是属性 这是一个属性。 一些属性定义为布尔值,这意味着您可以指定它们的值,而忽略其他所有内容。即,您只包括粗体部分,而不是disabled =“ disabled

  • 问题内容: 有什么方法可以使用CSS禁用链接吗? 我有一个叫的类,想禁用与此类的链接,以便在单击它们时不执行任何操作。 问题答案: 答案已经在问题的注释中。 如果您需要支持IE,则有一种解决方法。 警告:CSS中非SVG元素的使用是实验性的。该功能曾经是CSS3UI草案规范的一部分,但由于存在许多未解决的问题,因此已推迟到CSS4。