【问题标题】:Validating XML against XSD with <xs:any/> - Warning : Could not find schema information for the element使用 <xs:any/> 针对 XSD 验证 XML - 警告:找不到元素的架构信息
【发布时间】:2013-11-29 16:35:45
【问题描述】:

我正在尝试根据 XSD 验证我的 XML 文件,以检查文件是否具有正确的格式。 在我的 XSd 文件中,我希望 Row 元素包含尽可能多的任何元素,因此是 any 元素。

通过在线验证器,我检查了 XSD 的有效性,并检查了我想要检查的文件之一上的架构。一切都是有效的。 在线验证器是这个:http://www.utilities-online.info/xsdvalidation/

我的解析代码基于这个主题:c# XML Schema validation

我知道我的文件无效:Could not find schema information for the element &lt;MYELEMENT&gt;

没有找到的元素是我的Row元素内容中的。

完整的 .XSD 是:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="Root">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Row" minOccurs="0" maxOccurs="unbounded">
          <xs:complexType>
            <xs:sequence>
              <xs:any minOccurs='1' maxOccurs='unbounded' processContents="lax" />
            </xs:sequence>
          </xs:complexType>
         </xs:element>
       </xs:sequence>
     </xs:complexType>

我测试的 XML 是:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Root>
    <Row>
        <MODE_SAISIE_CT>'DEGRADE'</MODE_SAISIE_CT>
        <MODE_STATUT>'F'</MODE_STATUT>
        <MODE_LIBELLE>'Dégradé'</MODE_LIBELLE>
        <DATE_MODE_DEGRADE>'17/08/2011 15:28:17'</DATE_MODE_DEGRADE>
    </Row>
    <Row>
        <MODE_SAISIE_CT>'STANDARD'</MODE_SAISIE_CT>
        <MODE_STATUT>'V'</MODE_STATUT>
        <MODE_LIBELLE>'Standard'</MODE_LIBELLE>
        <DATE_MODE_DEGRADE>'17/08/2011 15:53:06'</DATE_MODE_DEGRADE>
    </Row>
</Root>

如果我的架构中有任何元素,我该如何管理解析?

【问题讨论】:

    标签: c# xml validation xsd


    【解决方案1】:

    如果没有看到显示问题的完整 XSD 和输入 XML,尚不清楚推荐什么,但也许这个工作示例将帮助您确定问题:

    此输入 XML:

    <?xml version="1.0" encoding="utf-8"?>
    <root>
      <Row>
        <MYELEMENT/>
      </Row>
    </root>
    

    对这个 XSD 有效:

    <?xml version="1.0" encoding="utf-8"?>
    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
      <xsd:element name="root">
        <xsd:complexType>
          <xsd:sequence>
            <xsd:element name="Row">
              <xsd:complexType>
                <xsd:sequence>
                  <xsd:any processContents="lax" maxOccurs="unbounded"/>
                </xsd:sequence>
              </xsd:complexType>
            </xsd:element>
          </xsd:sequence>
        </xsd:complexType>
      </xsd:element>
    </xsd:schema>
    

    【讨论】:

    • 感谢您的建议。我以为我得到的错误实际上只是警告,所以这并不意味着该文件无效。我检查了 ValidationEventArgs 的严重性。
    猜你喜欢
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多