【问题标题】:xsd validation limit root elementxsd 验证限制根元素
【发布时间】:2017-03-28 16:16:37
【问题描述】:

我有这个 xsd:

<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
  <xsd:element name="F">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:element maxOccurs="unbounded" name="A" />
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

这个xml有效,但是错误

<F><F>
<A/>
</F></F>

我只需要验证这个 xml

<F>
   <A/>
</F>

在xsd中怎么做?

C#代码

XmlDocument xml = new XmlDocument();
using (MemoryStream ms = new MemoryStream(File.ReadAllBytes(xml)))
    {
      xml.Load(ms);
    }

XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", xsdpath);
XDocument _xml = XDocument.Parse(xml.OuterXml);
_xml.Validate(schemas, (o, e) =>{});

【问题讨论】:

标签: c# xml xsd


【解决方案1】:

结果。

Validate() 只捕获错误,而不是警告。

xmlReader 有更多选项可以通过 xsd 检查 xml

如果 xml 和 xsd 具有不同的命名空间,则 validate() 将始终为 true。 要修复它,您应该从两个文件中删除命名空间或编写相同的命名空间。

【讨论】:

    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    相关资源
    最近更新 更多