C# 读取xml的最佳方法

C# 读取xml的最佳方法,c#,xml,linq,xpath,xmlreader,C#,Xml,Linq,Xpath,Xmlreader,读取XML的最佳方式是什么 我的xml就是这样 我要吃很多 <A> and <B>, not sure how many will be there and I have to read the whole xml file. 我不能说子元素像 <180> will be there under <A> for sure. So does the other element. 但是如果它在那里,我必须读它 我应该使用LINQ、XPath还是XM

读取XML的最佳方式是什么

我的xml就是这样 我要吃很多

<A> and <B>, not sure how many will be there and I have to read the whole xml file.
我不能说子元素像

<180> will be there under <A> for sure. So does the other element.
但是如果它在那里,我必须读它

我应该使用LINQ、XPath还是XMLReader?哪一个更好更容易

        <A>
            <180>20130218</180>  ///180 is here
            <170>5</170>
            <220>20080210</220>
            <730 CLID='AAA' KW='BBB' KW2='INTERNATIONAL'>
                <731>BBB INTERNATIONAL AG</731>
                <732>XXX</732>
                <735>US66</735>
                <734>YYY</734>
            </730>
            <300>
                <301>
                    <320>20071100</320>
                    <310>12345</310>
                </301>
                <330>US</330>
            </300>
        </A>
        <A>                    ///180 is not here
            <170>5</170>
            <220>20080210</220>
            <730 CLID='AAA' KW='BBB' KW2='WORLD'>
                <731>BBB INTERNATIONAL AG</731>
                <734>YYY</734>
            </730>
            <300>
                <301>
                    <320>20071100</320>
                    <310>12345</310>
                </301>
                <330>UK</330>
            </300>
        </A>
        <B>
            <180>20130218</180>
            <170>5</170>
            <220>20080210</220>
            <730 CLID='AAA' KW='BBB' KW2='INTERNATIONAL'>
                <731>BBB INTERNATIONAL AG</731>
                <732>XXX</732>
                <733>JP</733>
                <735>JP66</735>
                <734>YYY</734>
            </730>
            <300>
                <301>
                    <320>20071100</320>
                    <310>12345</310>
                </301>
                <330>JP</330>
            </300>
        </B>
我应该使用LINQ、XPath还是XMLReader?哪一个更好更容易

        <A>
            <180>20130218</180>  ///180 is here
            <170>5</170>
            <220>20080210</220>
            <730 CLID='AAA' KW='BBB' KW2='INTERNATIONAL'>
                <731>BBB INTERNATIONAL AG</731>
                <732>XXX</732>
                <735>US66</735>
                <734>YYY</734>
            </730>
            <300>
                <301>
                    <320>20071100</320>
                    <310>12345</310>
                </301>
                <330>US</330>
            </300>
        </A>
        <A>                    ///180 is not here
            <170>5</170>
            <220>20080210</220>
            <730 CLID='AAA' KW='BBB' KW2='WORLD'>
                <731>BBB INTERNATIONAL AG</731>
                <734>YYY</734>
            </730>
            <300>
                <301>
                    <320>20071100</320>
                    <310>12345</310>
                </301>
                <330>UK</330>
            </300>
        </A>
        <B>
            <180>20130218</180>
            <170>5</170>
            <220>20080210</220>
            <730 CLID='AAA' KW='BBB' KW2='INTERNATIONAL'>
                <731>BBB INTERNATIONAL AG</731>
                <732>XXX</732>
                <733>JP</733>
                <735>JP66</735>
                <734>YYY</734>
            </730>
            <300>
                <301>
                    <320>20071100</320>
                    <310>12345</310>
                </301>
                <330>JP</330>
            </300>
        </B>
XDocument Linq到XML将是最简单的。它可能会做你想做的,但是你应该更清楚地知道你想要的结果


XML可以大到150KB


没问题。只有当你达到150 MB时才开始考虑XMLRead。

你所使用的取决于你想要达到的目标。如果你只是简单地阅读内容,fopen也足够了。你想读什么?XML有多大?它能进入记忆吗?使用哪种XML解析器取决于这些问题的答案。我可以问一下您应该如何处理这个XML吗?我的意思是,把它转换成域模型对象,或者别的什么?除了A和B标记外,元素结构已知吗?我的意思是,将始终处于?XML可以大到150KB。我想将数据保存在数据库中。您提供的XML文档根本不是一个良好格式的XML文档。用XML工具处理它很可能会引起错误。更具体地说,元素名称不能以数字开头。因此,所有类似的标记都会导致产生错误。