1

xsd ファイル内のすべての要素をトラバースするには、助けが必要です。私はこの主題に不慣れです。以下のサンプルコードを貼り付けています。

まず、xsd ファイル (スニペットに示すように) を xml スキーマにロードするだけです。次に、ルート要素内の要素をトラバースする必要があります。

XmlSchema xsd = XmlSchema.Read(new StreamReader(AppKeysManager.ConfigurationMasterFolder + @"\Parameters.xsd"), null);
var xss = new XmlSchemaSet();
xss.Add(xsd);
xss.Compile();

foreach (DictionaryEntry item in xsd.Elements)
{
    rootElement = item.Value as XmlSchemaElement; break;
}

私のxsdがどのように見えるかのスニペット

<xs:complexType name="Parameters">
    <xs:all>
      <xs:element name="A">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="mstns:Restricted8CharString">
              <xs:attribute name="Caption" use="required" fixed="Caption for A">
                <xs:simpleType>
                  <xs:restriction base="xs:string"></xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="ActionWhenMaxReached" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:short">
                    <xs:pattern value="[1-3]"></xs:pattern>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="Expression" type="xs:string" default="0" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="B">
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:short">
              <xs:attribute name="Caption" use="prohibited">
                <xs:simpleType>
                  <xs:restriction base="xs:string"></xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="ActionWhenMaxReached" use="required">
                <xs:simpleType>
                  <xs:restriction base="xs:short">
                    <xs:pattern value="[1-3]"></xs:pattern>
                  </xs:restriction>
                </xs:simpleType>
              </xs:attribute>
              <xs:attribute name="Expression" type="xs:string" default="0" />
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      </xs:all>
      </xs:complexType name="Parameters">
4

1 に答える 1

0

以下のコードは、内部要素とその属性を提供します

XmlSchema xsd = XmlSchema.Read(new StreamReader(pathToxsdFile), null);


var xss = new XmlSchemaSet();
    xss.Add(xsd);
    xss.Compile();

    XmlSchemaElement rootElement = null;
    foreach (DictionaryEntry item in xsd.Elements)
    {
        rootElement = item.Value as XmlSchemaElement; break;
    }

    XmlSchemaComplexType innerContent = rootElement.ElementSchemaType as XmlSchemaComplexType;
    var innerContentsOfRoot = innerContent.Particle as XmlSchemaAll;

    foreach (XmlSchemaElement item in innerContentsOfRoot.Items)
    {
        XmlSchemaComplexType moreInnerContent = item.ElementSchemaType as XmlSchemaComplexType;

        foreach (DictionaryEntry item2 in moreInnerContent.AttributeUses)
        {
            if (string.Compare(((XmlSchemaAttribute)(item2.Value)).Name, attributeName, true) == 0)
            {
                string captionName = ((XmlSchemaAttribute)(item2.Value)).FixedValue;

            }
        }
    }
于 2013-07-16T07:40:12.223 に答える