当前位置: 首页 > 知识库问答 >
问题:

根据XSD验证格式良好的XML时出现的问题

莫河
2023-03-14

我正在创建一个XML验证器,它将根据特定的模式验证XML。我当前正在使用OASIS模式验证针对该模式的断言。下面是模式,当它被传递给SchemaFactory并且模式对象被创建时,xenc:encryptedData元素未被解析,该元素存在于导入的模式xenc-schema.xsd中。“

并且当我创建SchemaFactory的实例并尝试加载模式时,它无法定位在上述模式中导入的模式:

XML is not valid because 
src-resolve: Cannot resolve the name 'xenc:EncryptedData' to a(n) 'element declaration' component.

当创建模式对象应该能够定位导入的模式时,如何在SchemaFactory上解析导入的模式?下面是我正在编写的代码:

...
    System.out.println("Executing the value");
    SchemaFactory sf = SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);

    Source schemaFile = new StreamSource(new File("D:\\saml-schema-assertion-            2.0.xsd"));
    Schema schema = sf.newSchema(schemaFile);
    Validator validator = schema.newValidator();
    validator.setErrorHandler(new SAMLErrorHandler());

    validator.validate(new StreamSource(new File("D:\\Saml.xml")));
    System.out.println("XML is valid");
} catch (IOException ex) {
} catch (SAXException e) {
    System.out.println("XML is not valid because ");
    System.out.println(e.getMessage());
}

我正在寻求答复。

共有1个答案

贺文彬
2023-03-14

看起来xenc命名空间没有在您的XML文件中声明,或者至少没有在整个元素xenc:encrypteddata中声明。请张贴您的XML文件。我在XSD文件中看不到encrypteddata元素定义。

 类似资料:
  • 我试图在Java验证XSD1.1中的XML。正如所讨论的,如何在Java根据XSD1.1验证XML? 我有个例外说: java.lang.IllegalArgumentException:无法加载实现http://www.w3.org/xml/xmlschema/v1.1指定的架构语言的SchemaFactory 然后我尝试,错误是: 无法从类型SchemaFactory对非静态方法setProp

  • 我正在尝试使用SAX解析和验证SOAP请求。需要两个XSD,一个用于SOAP信封(http://schemas.xmlsoap.org/soap/envelope/),另一个用于我定义的。我找不到针对这两个XSD正确验证请求的方法。 下面是我用来解析请求并根据soapenv验证它的代码。xsd。它工作得很好。如果改为指定XSD,验证将失败,并显示“找不到元素‘soapenv:Envelope’的声

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

  • 问题内容: 我正在生成一些XML模式,并希望确保我们的生成器正在创建有效的XML模式文档(不是XML)。我试图提出验证XML Schema文档的代码,但失败了。我不认为会这么复杂。 这段代码与我需要做的非常接近,但是出现以下错误。 我在调用setSchema(uri)时使用URL,以确保XMLSchema.dtd和datatypes.dtd是相对的,希望它们可用,但是我不确定如何进行检查。 我猜想

  • 我在验证xml和xsd时遇到问题。我从xsd模式中得到这个错误。 src解决方案。4.2:解析组件“urn:id”时出错。检测到“urn:id”位于命名空间“urn:schemas microsoft com:xml-diffgram-v1”中,但此命名空间中的组件无法从架构文档中引用virtual://server/schema.xsd。如果名称空间不正确,可能需要更改“urn:id”的前缀。如

  • 以下是我的问题陈述: XYZ学校希望将学生和教职员工的详细信息存储在xml文件中。以下场景有助于设计XML文档。persons将是根标签。每个人都有姓名、年龄、性别、地址的条目。一个人可以是学生也可以是教职员工。学生将有rollno、standard和section。如果是工作人员,则标记和主题。每个人都必须有一个带有以下条目的地址-门牌号、街道、城市和州。 我写的代码如下: ] 它给出了错误-异