java - 我可以在 Java 中根据 XSD 片段验证 XML 文件吗

标签 java xml jaxb xmlbeans

我可以根据 xsd 片段验证 XML 文件吗? 例如,我有一个类似以下的 XML:

<tag1>
    <xx>...</xx>
</tag1>

还有一个 XSD,例如:

<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="envTeste">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element name="tag" minOccurs="1" maxOccurs="1">
          <xsd:simpleType>
            <xsd:restriction base="xsd:int">
              <xsd:totalDigits value="1" />
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:element>
        <xsd:element name="tag1" minOccurs="1" maxOccurs="1">
          <xsd:simpleType>
            <xsd:restriction base="xsd:string">
              <xsd:pattern value="^\d{1,15}$"/>
            </xsd:restriction>
          </xsd:simpleType>
        </xsd:element>
............................

我只想使用片段“name=tag1”来验证我的 xml。 这是可能的?使用 JAXB?

非常感谢。

最佳答案

不,这对于 JAXB 来说是不可能的,并且我认为在给定当前 XML 架构和如图所示的 XML 数据的情况下,任何其他工具都无法执行此类部分验证。

首先,您显示的 XML 与 XML 架构的部分不一致 <xsd:element name="tag1"...>> 。因此,它无论如何都不会验证。

其次,假设 XML 架构代码和 XML 数据匹配,您可以考虑将 XML 数据包装到 <envTeste> 中。元素,但由于缺少 <tag>,验证将不会成功。元素。

但是你可以写一个(正确且匹配的!)元素 <tag1>作为顶级 XML 模式元素并从 <envTeste> 中引用它。然后,一个 XML 文档由 <tag1> 组成可以通过传递给解码器的 XML 模式文件进行解码。

另一个选项是(相当简单的)XSLT,用于从“有趣的”元素生成 XML 架构,并将它们安装为顶级元素 - 前提是架构不是太复杂。不确定,但可能可行。

关于java - 我可以在 Java 中根据 XSD 片段验证 XML 文件吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25250005/

相关文章:

android - 如何制作半屏显示的Activity?

java - jaxb嵌套列表元素返回null

java - @XmlElements 标有@XmlJavaTypeAdapters?

java - 绘图不显示

java.lang.NoClassDefFoundError : org/apache/axis2/AxisFault When axis2-kernel-1. 5.4.jar在类路径中

java - 我可以将tools.jar上传到Maven Central吗?

java - 如何使用 Spring 快速删除数据库表内容?

java - 使用 SAX 在节点上运行转换

javascript - 将属性插入 XSLT 工作表内的 javascript 时出现问题

java - jaxb 以字符串形式输出