0

次の Xml を検証しようとしています。

string xml = @"<?xml version=""1.0"" encoding=""utf-8"" ?>
                    <ROOT xmlns:bk=""urn:samples"">
                        <RandomName1>
                            <Element1>v</Element1>
                            <Element2>v</Element2>
                            <Element3>v</Element3>
                            <Element4>v</Element4>
                    </RandomName1>
                        <RandomName2>
                            <Element1>v</Element1>
                            <Element2>v</Element2>
                            <Element3>v</Element3>
                            <Element4>v</Element4>
                    </RandomName2>
                    </ROOT>";

RandomNameN任意の文字列です。Element1 - Element4が存在し、正しく名前が付けられていること、およびスキーマが一致していることを確認することに関心があります。

私は次のことを試しました

string xsdMarkup =
                @"<xsd:schema xmlns:xsd='http://www.w3.org/2001/XMLSchema'>
                   <xsd:element name='ROOT'>
                    <xsd:complexType>
                     <xsd:sequence>
                      <xsd:any>
                        <xsd:complexType>
                            <xsd:sequence>
                                <xsd:element name ='Element1'/>
                                <xsd:element name ='Element2'/>
                                <xsd:element name ='Element3'/>
                                <xsd:element name ='Element4'/>
                            </xsd:sequence>
                        </xsd:complexType>
                        </xsd:any>
                     </xsd:sequence>
                    </xsd:complexType>
                   </xsd:element>
                  </xsd:schema>";

XmlSchemaSet schemas = new XmlSchemaSet();
schemas.Add("", XmlReader.Create(new StringReader(xsdMarkup)));

var xDoc = XDocument.Parse(xml);

bool errors = false;
string msg = string.Empty;

xDoc.Validate(schemas, (o, e) =>
    {
        msg = e.Message;
        errors = true;
    });

私は得ていますSystem.Xml.Schema.XmlSchemaException

http://www.w3.org/2001/XMLSchema:complexType」要素は、このコンテキストではサポートされていません。

RandomName1ノードに名前を必要とせずに存在させる方法も知る必要があります。私は</xsd:any>代わりにこれを達成しようとしました</xsd:element>

4

2 に答える 2

0

xml プロデューサーがあなたの管理下にあるかどうかはわかりません。もしそうなら、あなたはそれを解決することができます<FixedNameElement randomName="...">.

于 2013-08-09T09:56:34.683 に答える