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

使用Java中的多个XSD验证XML

红存
2023-03-14
问题内容

我想使用Java解析XML文件,并针对XSD模式在同一步骤中对其进行验证。XML文件可能包含几种模式的内容,如下所示:

<outer xmlns="my.outer.namespace" xmlns:x="my.third.namespace">
    <foo>hello</foo>
    <inner xmlns="my.inner.namespace">
         <bar x:id="bar">world</bar>
    </inner>
</outer>

给定一个名称空间,可以提供相应的xsd文件,但是在解析之前,所使用的名称空间是未知的。如果架构定义了属性的默认值,我也想以某种方式知道这一点。

如果知道架构,我可以验证文件,无需验证就可以解析文件,并且实现了LSResourceResolver。但是,我无法使其全部协同工作。如何设置我的(SAX)解析器?


问题答案:

曾经设计过Java XML API的人一定在使用毒品。

public void parseAndValidate(File xmlFile, ContentHandler handler) {
    SchemaFactory schemaFactory =
            SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    schemaFactory.setResourceResolver(new MySchemaResolver());
    Schema schema = schemaFactory.newSchema();

    Validator v = schema.newValidator();
    v.setResourceResolver(schemaFactory.getResourceResolver());

    InputSource is = new InputSource(new FileInputStream(xmlFile));
    v.validate(new SAXSource(is), new SAXResult(handler));
}


 类似资料:
  • 使用krasa-jaxb-tools jaxb-plugin,我生成了以下内容: 来自XSD架构: 我得到了注释元素: 使用JAXB,我成功地生成了有效的XML(它通过了XSD验证--包括上面提到的字符串的格式)。 但是,如果我尝试使用Bean验证验证上面提到的字符串,它会抛出错误--如果它被写为“small123”,它会说它应该大写(失败small.123[a-za-z0-9.]{0,27}re

  • 我有一个servlet,它使用打包在.jar存档中的实用程序: 此实用工具获取xml文件流,针对xsd模式执行验证并解析它: xsd文件以: xml文件: Servlet Init方法抛出异常: 如何指定SAXParser在哪里需要xsd模式来验证xml文件? 附注。对不起,我的英语不好 UPD: 我正在尝试添加此属性: UPD2:在xml文件中使用“classpath:appcontext.xs

  • 我正在使用Delphi10.2更新3。我按照这些说明验证生成的xml文档。 属性noNamespaceSchema位置对XML解析有什么影响? 使用Windows DOM和TXMLDocument验证XML:在某些计算机上不起作用 delphi中msxml的模式验证 但我有一个错误。“DTD/架构中未定义元素‘jegyzek\u adatok’上的属性‘noNamespaceSchemaLocat

  • 谁能解释一下如何使用notepad++根据XSD验证xml文件。“XML Tools”插件下拉列表中没有提供指定XSD文件的选项。在plugins子目录中正确安装XML插件,并将3个DLL复制到notepad++EXE子目录。其他XML“验证”特性也可以工作,但无法针对XSD进行验证。

  • 我需要针对给定的XSD文件验证多个XML文件。问题是XSD由两个文件组成。它们是嵌套的,尽管我知道哪个是第一个(其他文件的“父”)。在XML文件中,我使用命名空间来定义子节点在哪个XSD中定义

  • 我有一个在Android中使用API10(2.3.3版本)的项目,我有一个问题是用xsd文件验证xml。这是我的代码: 我的Eclipse模拟器抛出一个异常:E/AndroidRuntime(4770):由:java.lang.IllegalArgumentException引起:http://www.w3.org/2001/XMLSchema 在这一行中:SchemaFactory factor