我正在尝试验证以下 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
我还需要知道如何使RandomName1节点不需要名称而是存在。我试图通过</xsd:any>而不是</xsd:element>