Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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# XML流量控制_C#_Xml_C# 4.0_Linq To Xml - Fatal编程技术网

C# XML流量控制

C# XML流量控制,c#,xml,c#-4.0,linq-to-xml,C#,Xml,C# 4.0,Linq To Xml,我有一个“xml源”正在向我发送xml xml可以有两种方式。与“秩序”相关的人。第二个与“员工”相关 通常,在分解xml时,我使用一些Linq到xml来解析已知的xml模式 但是现在,随着两种不同的xml模式向我走来,我正试图找到“交通警察”xml的最有效方法 我试过的是: 解析“version1”……然后检查强制(订单)数据(如有效的订单ID)。如果该数据不存在,则: 解析“version2”……然后检查必需的员工数据,如employeeSSN 如果两个都失败了,那么我会记录我没有得到任何一

我有一个“xml源”正在向我发送xml

xml可以有两种方式。与“秩序”相关的人。第二个与“员工”相关

通常,在分解xml时,我使用一些Linq到xml来解析已知的xml模式

但是现在,随着两种不同的xml模式向我走来,我正试图找到“交通警察”xml的最有效方法

我试过的是:

  • 解析“version1”……然后检查强制(订单)数据(如有效的订单ID)。如果该数据不存在,则:
  • 解析“version2”……然后检查必需的员工数据,如employeeSSN
  • 如果两个都失败了,那么我会记录我没有得到任何一个
  • 关于什么是对Xml进行流量控制的最有效的方法,有什么想法吗

    我的另一个想法是创建xsd,并进行验证。但是我正在运行一个xsd验证…然后将它发送到一个“解析器”…这样可能比上面的想法效率更低…try1,try2,然后失败

    虽然我可以选择何时使用xml,但我不能更改xml发送给我的方式。xml放在队列中,体系结构不允许通过与第三方供应商签订的合同将不同的xml放在不同的队列中

    你知道我没看见吗

    我不喜欢同一个队列中有不同的xml…………但这条船已经开航了

    下面的xml是由……组成的,但说明xml完全不同,没有任何共享

    <root>
        <orders>
            <order orderId="ABC123">
                <orderDetails>
                    <orderDetail itemName="Bike" quantity="1"/>
                    <orderDetail itemName="TeddyBear" quantity="2"/>
                    <orderDetail itemName="Doll" quantity="3"/>
                </orderDetails>
            </order>
            <!--  -->
            <order orderId="DEF234">
                <orderDetails>
    
                    <orderDetail itemName="Truck" quantity="4"/>
                    <orderDetail itemName="Marbles" quantity="5"/>
                    <orderDetail itemName="BoardGame" quantity="6"/>
    
                </orderDetails>
            </order>
        </orders>
    </root>
    
    
    
    
    <root>
        <employees>
            <employee employeeSSN="222222222" firstName="John">
                <employeeEmails>
                    <employeeEmail emailValue="john@home.com" />
                    <employeeEmail emailValue="john@work.com" />
                </employeeEmails>
            </employee>
            <!--  -->
            <employee employeeSSN="3333333" firstName="Mary">
                <employeeEmails>
    
                    <employeeEmail emailValue="mary@home.com" />
                    <employeeEmail emailValue="mary@work.com" />
                    <employeeEmail emailValue="mary@spamcatcher.com" />
    
                </employeeEmails>
            </employee>
        </employees>
    </root>
    
    
    
    如果模式从未改变,就继续做你正在做的事情。搜索“employees”元素或“orders”元素,然后从中选择OK。我想没有别的了。但是我想我应该问问那里的专家。我认为用XSD检查它们是一种“正确”的方法,可以让你将这个过程扩展到多种格式。但是,如果有一种简单、可靠的方法来区分它们,并且扩展性不是一个问题,那么我同意简单的选择可能是一种方法。