2016-10-26 4 views
0

のxsdスキーマに対してxmlファイルを正常に検証する必要があります。 "ID"属性が宣言されていないというエラーが発生しました。 '学生'。xmlファイルとxsdスキーマファイルの両方を追加した後にコードを実行すると、C#

<?xml version="1.0" encoding="utf-8" standalone="yes"?> 
 
<Students> 
 
    <Student ID="101"> 
 
    <Name>kamal</Name> 
 
    <Gender>Male</Gender> 
 
    <Marks>800</Marks> 
 
    </Student> 
 
    <Student ID="102"> 
 
    <Name>Sapna</Name> 
 
    <Gender>Female</Gender> 
 
    <Marks>900</Marks> 
 
    </Student> 
 
    <Student ID="103"> 
 
    <Name>Raju</Name> 
 
    <Gender>Male</Gender> 
 
    <Marks>870</Marks> 
 
    <Student ID="104"> 
 
     <Name>Sushant</Name> 
 
     <Gender>Male</Gender> 
 
     <Marks>700</Marks> 
 
    </Student> 
 
    </Student> 
 
</Students>

<?xml version="1.0" encoding="utf-8" ?> 
 
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
 
    <xsd:element name="Students"> 
 
    <xsd:complexType> 
 
     <xsd:sequence> 
 
     <xsd:element name="Student" minOccurs="1" maxOccurs="4"> 
 
      <xsd:complexType> 
 
      <xsd:sequence> 
 
       <xsd:element name="Name" minOccurs="1" maxOccurs="1"/> 
 
       <xsd:element name="Gender" minOccurs="1" maxOccurs="1"/> 
 
       <xsd:element name="Marks" minOccurs="1" maxOccurs="1"/> 
 
      </xsd:sequence> 
 
      </xsd:complexType> 
 
     </xsd:element> 
 
     </xsd:sequence> 
 
    </xsd:complexType> 
 
    </xsd:element> 
 
</xsd:schema>

そして最後にコードファイル:

using System; 
 
using System.Collections.Generic; 
 
using System.Linq; 
 
using System.Text; 
 
using System.Threading.Tasks; 
 
using System.Xml.Linq; 
 
using System.Xml.Schema; 
 

 
namespace ClassLibrary1 
 
{ 
 
    class Class16 
 
    { 
 
     public static void Main() 
 
     { 
 
      XmlSchemaSet ss = new XmlSchemaSet(); 
 
      ss.Add("", @"C:\Users\admin\documents\visual studio 2013\Projects\ClassLibrary1\ClassLibrary1\Students.xsd"); 
 
       
 
      XDocument doc = XDocument.Load(@"C:\Users\admin\documents\visual studio 2013\Projects\ClassLibrary1\ClassLibrary1\sample1.xml"); 
 
       
 
      bool validationerror = false; 
 
      doc.Validate(ss,(s,e)=> 
 
       { 
 
        Console.WriteLine(e.Message); 
 
        validationerror = true; 
 
       }); 
 
      if(validationerror) 
 
      { 
 
       Console.WriteLine("Validation failed"); 
 
       Console.ReadLine(); 
 

 
      } 
 
      else 
 
      { 
 
       Console.WriteLine("Validation succeded"); 
 
       Console.ReadLine(); 
 
      } 
 

 
       
 
     } 
 
    } 
 
}
検証は、以下の私のコードです 失敗しました

答えて

0

あなたはXSDとsample.xmlの両方で変更する必要があります。ご参考にしてください。正しいXSDファイルとxmlファイルを以下で見つけてください。

正しいサンプル:

 <?xml version="1.0" encoding="utf-8" standalone="yes"?> 
     <Students> 
      <Student ID="101"> 
      <Name>kamal</Name> 
      <Gender>Male</Gender> 
      <Marks>800</Marks> 
      </Student> 
      <Student ID="102"> 
      <Name>Sapna</Name> 
      <Gender>Female</Gender> 
      <Marks>900</Marks> 
      </Student> 
      <Student ID="103"> 
      <Name>Raju</Name> 
      <Gender>Male</Gender> 
      <Marks>870</Marks> 
      </Student> 
      <Student ID="104"> 
       <Name>Sushant</Name> 
       <Gender>Male</Gender> 
       <Marks>700</Marks> 
      </Student> 
     </Students> 

正しいXSD:

<?xml version="1.0" encoding="utf-8" ?> 
     <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
      <xsd:element name="Students"> 
      <xsd:complexType> 
       <xsd:sequence> 
       <xsd:element name="Student" minOccurs="1" maxOccurs="4"> 
        <xsd:complexType>  
        <xsd:sequence> 
         <xsd:element name="Name" minOccurs="1" maxOccurs="1"/> 
         <xsd:element name="Gender" minOccurs="1" maxOccurs="1"/> 
         <xsd:element name="Marks" minOccurs="1" maxOccurs="1"/> 
        </xsd:sequence> 
        <xsd:attribute name="ID" type="xsd:string" use="required" /> 
        </xsd:complexType> 
       </xsd:element> 
       </xsd:sequence> 
      </xsd:complexType> 
      </xsd:element> 
     </xsd:schema> 
+0

あなたはここで変更何をしたか教えて! –

+1

XSD –

+1

を追加しました。だから私はそれをしました。 XMLファイルの3番目の生徒要素を注意深く観察すると、終了タグが最後に移動したことがわかります。このため、エラーが発生しています」要素「Student」に無効な子要素「Student」があります。「 –

関連する問題