Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何处理无效的子元素?_C#_Xml_Io - Fatal编程技术网

C# 如何处理无效的子元素?

C# 如何处理无效的子元素?,c#,xml,io,C#,Xml,Io,我有几个XML是这样的: -<PURCHASE xmlns:odf="urn:xmlns:eAccepta:output-data-fields"> -<PO TYPE="PURCHASEORDER"> <CUSTPONUM>PO0000</CUSTPONUM> <CUSTNUM/> <CUSTNAME>Custom name</CUSTNAME> <DATE>2014-01-06<

我有几个XML是这样的:

-<PURCHASE xmlns:odf="urn:xmlns:eAccepta:output-data-fields">


-<PO TYPE="PURCHASEORDER">

<CUSTPONUM>PO0000</CUSTPONUM>

<CUSTNUM/>

<CUSTNAME>Custom name</CUSTNAME>

<DATE>2014-01-06</DATE>

<CUSTPREFIX>5LAN</CUSTPREFIX>

<MEMO/>

</PO>


-<POLINES>


-<LINE>

<LINENUM>0</LINENUM>

<CUSTLINE>1</CUSTLINE>

<CUSTITEM>013169</CUSTITEM>

<ITEMREV>A</ITEMREV>

<DESCRIPTION>Description</DESCRIPTION>

<QTY>2</QTY>

<PRICE>46.14</PRICE>

<DUEDATE>2014-01-30</DUEDATE>

<OURITEM>gfd4fd</OURITEM>

<CUSTREF>013169</CUSTREF>

<ITEMMEMO/>

</LINE>

</POLINES>

</PURCHASE>
public void ValidateXmlDocument(string documentToValidate, string schemaPath)
        {
            XmlSchema schema;
            using (var schemaReader = XmlReader.Create(@"C:\XML\XMLSchema.xsd"))
            {
                schema = XmlSchema.Read(schemaReader, ValidationEventHandler);
            }

            var schemas = new XmlSchemaSet();
            schemas.Add(schema);

            var settings = new XmlReaderSettings();
            settings.ValidationType = ValidationType.Schema;
            settings.Schemas = schemas;
            settings.ValidationFlags =
                XmlSchemaValidationFlags.ProcessIdentityConstraints |
                XmlSchemaValidationFlags.ReportValidationWarnings;
            settings.ValidationEventHandler += ValidationEventHandler;

            using (var validationReader = XmlReader.Create(documentToValidate, settings))
            {
                while (validationReader.Read())
                {
                    Console.WriteLine("ValidateXmlDocument ok");
                }
            }
        }

        private static void ValidationEventHandler(
            object sender, ValidationEventArgs args)
        {
            if (args.Severity == XmlSeverityType.Error)
            {
                throw args.Exception;
            }

            Console.WriteLine(args.Message);
        }
我得到的错误是

The element 'POLINES' has invalid child element 'LINE'.
当我使用免费的在线XML验证器进行验证时,它告诉我XML对XSD文件是完全完美的。
尽管我的代码不断给我错误。

至少有一个问题是您对条目子元素的排序不正确。序列标记中定义的元素必须以相同的顺序出现在相应的XML文档中

在根据模式验证示例XML之后,这是我看到的唯一问题

编辑:

如果您无法控制输入文件的元素顺序&它是不一致的&条目的每个子元素在每个条目中最多只能出现一次,那么您可能希望使用该元素而不是顺序


我自己把
改成

希望有一天这能帮到别人。

这不是一个选项,因为可能会发生多次。如果显示0或1次,则可以使用“all”。而且我的子元素的顺序都与我的XSD对应。。
The element 'POLINES' has invalid child element 'LINE'.