我有这个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) =>{});
答案 0 :(得分:0)
结果。
Validate()仅捕获错误,而不捕获警告。
xmlReader有更多选项可以通过xsd检查xml
如果xml和xsd具有不同的命名空间,则validate()将始终为true。 要修复它,您应该从两个文件中删除命名空间或写入相同的命名空间。