为什么我的xsd文件无法验证我的xml文件?

时间:2015-05-01 17:36:20

标签: c# xml xsd

我在visual studio 2012中使用C#。我手动创建了xsd文件,我正在通过文本文件中的C#创建xml。 xsd定义如下:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="BCIElectronicFormatIncoming"
    targetNamespace="http://tempuri.org"
    elementFormDefault="qualified"
    xmlns="http://tempuri.org"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="Incoming">
    <xs:complexType>
      <xs:sequence>

xml定义如下:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<Incoming xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://tempuri.org/BCIElectronicFormatIncoming.xsd">

这是我用于实际验证的代码:

XmlSchemaSet mySchemaSet = new XmlSchemaSet();
bool foundErrors = false;

mySchemaSet.Add("http://tempuri.org/BCIElectronicFormatIncoming.xsd", "BCIElectronicFormatIncoming.xsd");            

Console.WriteLine("Validating document...");            
curXDocumentRowData.Validate(mySchemaSet, (o, e) =>
{
    Console.WriteLine("{0}", e.Message);
    foundErrors = true;
});
Console.WriteLine("Current Document {0}", foundErrors ? "did not validate" : "validated");

当我运行验证时,它会在没有检查xml的情况下通过。我已经改变了根元素的名称&#34; Incoming&#34;随机字符串,它仍然没有捕获错误。我究竟做错了什么?另外一个与此相关的问题是,当我在xml的根元素上使用C#包含xmlns属性时,我会在每个其他元素上获得xmlns=""。我不确定这是从哪里来的。有什么想法吗?

0 个答案:

没有答案