2011-12-12 43 views
1

大家好,我有我的XML文件如下出了錯任何一個可以告訴在那裏我在C#中使用XSD驗證XML

名稱的XMLXMLFile2.xml

<?xml version="1.0"?> 
<Product ProductID="123" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="Product.xsd"> 
<ProductName>XYZ</ProductName> 
</Product> 

XSD如下

<?xml version="1.0" encoding="utf-8"?> 
<xs:schema id="Product" 
targetNamespace="http://tempuri.org/Product.xsd" 
elementFormDefault="qualified" 
xmlns="http://tempuri.org/Product.xsd" 
xmlns:mstns="http://tempuri.org/Product.xsd" 
xmlns:xs="http://www.w3.org/2001/XMLSchema"> 
<xs:element name="Product"> 
<xs:complexType> 
    <xs:sequence> 
    <xs:element name="ProductName" type="xs:string"></xs:element> 
    </xs:sequence> 
    <xs:attribute name="ProductID" type="xs:int" use="required"/> 
</xs:complexType> 
</xs:element> 

這是我的代碼

string strPath = Server.MapPath("XMLFile2.xml"); 
XmlTextReader r = new XmlTextReader(strPath); 
XmlValidatingReader v = new XmlValidatingReader(r); 
v.ValidationType = ValidationType.Schema; 
v.ValidationEventHandler += 
new ValidationEventHandler(MyValidationEventHandler); 
while (v.Read()) 
    { 

    } 
v.Close(); 

    if (isValid) 
     Response.Write("Document is valid"); 
    else 
     Response.Write("Document is invalid"); 

我收到以下錯誤

Validation event 
The targetNamespace parameter '' should be the same value as the targetNamespace 'http://tempuri.org/Product.xsd' of the schema.Validation event 
The 'Product' element is not declared.Validation event 
Could not find schema information for the attribute 'ProductID'.Validation event 
The 'ProductName' element is not declared.Document is invalid 

任何一個可以告訴我哪裏錯了。

回答

5

您的XSD設置爲驗證"http://tempuri.org/Product.xsd"命名空間,但您的XML只包含""命名空間中的元素。

根據用戶要求,您需要(a)更改XML文件以使用"http://tempuri.org/Product.xsd"命名空間,或(b)更改XSD文件以使用""命名空間。

+0

我沒有得到你。 – Dotnet

+0

您的XML文件根元素沒有'xmlns'屬性,因此所有元素都屬於空名稱空間(''「'')。相比之下,您的XSD文件具有指定特定命名空間的'targetNamespace'屬性。 –

+1

@用戶 - 您的XML沒有默認名稱空間。 – Oded

相關問題