XSD 파일을 구문 분석하고 있습니다. (일부 요소, complexTypes 및 simpleTypes 포함)XSD 파일에서 SimpleType을 검색하는 방법은 무엇입니까?
각 속성을 유형별로 검색하려고합니다.
내 XSD 파일이 이와 비슷합니다. 는 IT의 재산 또는 다른 좋은 표현과 함께하는 SimpleType
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="mainInfo">
<xsd:complexType>
<xsd:sequence>
<xsd:element ref="DocumentInfo" minOccurs="1" maxOccurs="1" />
<xsd:element ref="Prerequisite" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<!-- Element of DocumentInfo -->
<xsd:element name="DocumentInfo">
<xsd:complexType>
<xsd:attribute name="Name" type="xsd:string" />
<xsd:attribute name="Description" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<!-- Element of Prerequisite -->
<xsd:element name="Prerequisite">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Type" type="Prerequisite.Type.type" minOccurs="1" maxOccurs="1" />
</xsd:sequence>
</xsd:complexType>
</xsd:element>
<xsd:complexType name="Prerequisite.Type.type">
<xsd:attribute name="SystemType" type="SystemTypeEnum" />
</xsd:complexType>
<xsd:simpleType name="SystemTypeEnum">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="Linux" />
</xsd:restriction>
</xsd:simpleType>
</xsd:schema>
// Add the customer schema to a new XmlSchemaSet and compile it.
// Any schema validation warnings and errors encountered reading or
// compiling the schema are handled by the ValidationEventHandler delegate.
XmlSchemaSet schemaSet = new XmlSchemaSet();
schemaSet.ValidationEventHandler += new ValidationEventHandler(ValidationCallback);
schemaSet.Add("http://www.w3.org/2001/XMLSchema", "D:\\TMP\\test.xsd");
schemaSet.Compile();
// Retrieve the compiled XmlSchema object from the XmlSchemaSet
// by iterating over the Schemas property.
XmlSchema customerSchema = null;
foreach (XmlSchema schema in schemaSet.Schemas())
{
customerSchema = schema;
}
foreach (XmlSchemaElement element in customerSchema.Elements.Values)
{
XmlSchemaComplexType complexType = element.ElementSchemaType as XmlSchemaComplexType;
// currently, i detect my ComplexType via the method below.
if (aSchemaType.TypeCode == XmlTypeCode.None)
{
// Insert some code to handle ComplexType obj
// Handle Elements of XSD File
foreach (XmlSchemaElement element in customerSchema.Elements.Values)
{
XmlSchemaComplexType complexType = element.ElementSchemaType as XmlSchemaComplexType;
Dictionary<string, object> aTempDict = new Dictionary<string,object>();
mainDict.Add(element.Name, aTempDict);
//Parse elements
parseElement(complexType, ref aTempDict);
break;
}
}
// i want to find a method to detect my SimpleTYpe
// a little like this way, but i don't want to compare the equal or not with some string value. (NO == "string", thanks.)
else if (attribute.AttributeSchemaType.TypeCode == ???)
// else if (Some other method to detect SimpleType in a XSD file)
{
// Insert some code to handle SimpleType obj
// Loop the XSD Node and find out all the SimpleTye objects(members and type values), then add them to the related sub Dictionary based on ComplexType elements **TYPE** defined.
}
}
아래 내 샘플 코드는 어떻게 속성의 유형을 감지 할 수있다?
당신을 수 질문을 바꾸세요? 네가하려는 일을 잘 모르겠다. – Diadistis
@Diadistis, 안녕하세요, 저는 제 질문에 대해 다시 말했습니다. –
멍청한 질문이지만 XML 파서에는 요소의 이름을 결정하는 데 사용할 수있는 "elementName"메서드가 없으므로 요소의 이름이 "simpleType"또는 "complexType"인 것으로 확인됩니다. 나는 속성 이름에 대한 액세스가 아니라 실제 요소 이름에 대한 액세스를 의미합니다. –