我在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=""
。我不确定这是从哪里来的。有什么想法吗?