2016-10-26 6 views
0

의 xsd 스키마에 대해 내 xml 파일의 유효성을 검사해야합니다. "ID"특성이 선언되지 않았기 때문에 오류가 발생합니다. 'Student'요소에 잘못된 자식 요소가 있습니다. '학생'.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

여러분은 sample.xml과 XSD 모두에서 변경해야합니다. 참조 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에서 한 학생 요소를 올바르게 닫지 않았습니다. 그래서 나는 그것을했다. XML 파일의 세 번째 학생 요소를주의 깊게 관찰하면 닫는 태그가 끝까지 이동한다는 것을 알 수 있습니다. 이 때문에 당신은 오류가 발생합니다 "요소 '학생'에 잘못된 자식 요소 '학생'이 있습니다." –