Я использую DataSet.ReadXmlSchema()
для построения набора данных и DataSet.ReadXml()
для загрузки данных.
Затем я привязываюсь к набору данных для редактирования данных. Я хочу контролировать вставку и удаление строк в таблицах в наборе данных на основе свойств minOccurs и maxOccurs, определенных в моей схеме.
Я попытался загрузить приведенную ниже схему в экземпляр XmlSchema
, например, MySchema. Учитывая, что minOccurs и maxOccurs по умолчанию равны 1, если не указано иное, узлы LastName
и FirstName
должны встречаться ровно один раз. Contacts
может встречаться 0 или 1 раз, а ContactName
может встречаться 0-10 раз.
Как только экземпляр XmlSchema
создан, как я могу ссылаться на свойства minOccurs и maxOccurs для узлов?
Я обнаружил, что класс XmlSchemaParticle
содержит свойства MinOccurs и MaxOccurs, но я не смог выяснить, как перемещаться по экземпляру XmlSchema
, чтобы найти их.
Я пытался посмотреть на MySchema.Items
, но, похоже, эта информация не содержит.
Это даже "лучший" подход? Любые предложения будут с благодарностью.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema id="Person.xsd" attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Person">
<xs:complexType>
<xs:sequence>
<!--Required Nodes-->
<xs:element name="LastName" type="xs:string"/>
<xs:element name="FirstName" type="xs:string"/>
<!-- Optional Nodes-->
<xs:element name="Contacts" minOccurs="0">
<xs:complexType>
<xs:sequence>
<xs:element name="ContactName" minOccurs="0" maxOccurs="10">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string"/>
</xs:simpleContent>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Кто-нибудь знает, как я могу найти значения MinOccurs / MaxOccurs из экземпляра XmlSchema? Я прочитал документацию в MSDN, а также попытался перемещаться по классу через отладчик Visual Studio, но не могу найти правильные свойства для этих значений.