如何使用Linq to XML读取XML?

| 我的XML文件没有重复的信息(例如Feed xml文件)。我只需要从xml文件中选择的一些信息。
<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<root>
    <client>
        <Name>abc, xyz\'s</Name>
        <DOB>2/1/1922</DOB>
        <Number>1234567896</Number>
        <Gender>unknown</Gender>
    </client>
    <Info>
        <ID>1111111111</ID>
        <Title>TITLE</Title>
    </Info>
    <BasicInfo>
        <TransDate>3/16/2011</TransDate>
        <Channel>1 + 1</Channel>
        <Ind></Ind>
        <Med></Med>
        <Comment>This is comment</Comment>
    </BasicInfo>
</root>
从上面的文件中,我只需要以下元素的值: 名称 数 标题 评论 如何使用Linq to XML读取此文件?请帮忙。     
已邀请:
简单:
XDocument doc = XDocument.Load(\"feed.xml\");

XElement client = doc.Root.Element(\"client\");
string name = (string) client.Element(\"Name\");
int number = (int) client.Element(\"Number\");

XElement info = doc.Root.Element(\"Info\");
string title = (string) info.Element(\"Title\");

XElement basicInfo = doc.Root.Element(\"BasicInfo\");
string comment = (string) basicInfo.Element(\"Comment\");
可以将其缩短,但是为不同的元素使用单独的变量将使调试更加容易。当然,以上代码根本没有错误检查...根据您的情况,您可能需要加载或不加载:)     
在这里使用XPath是一个不错的选择:
XDocument doc = XDocument.Load(\"file.xml\");
string name = (string)doc.XPathSelectElement(\"//root/client/Name\");
string title = (string)doc.XPathSelectElement(\"//root/Info/Title\");
string comment = (string)doc.XPathSelectElement(\"//root/BasicInfo/Comment\");
没有错误检查,但是如果您知道这些元素将在其中,那么效果很好。     
万一您被迫(像我一样)被迫使用VB.Net :),这是一个可能的解决方案:
Dim xdoc As XDocument = <?xml version=\"1.0\" encoding=\"UTF-8\"?>
                                    <root>
                                        <client>
                                            <Name>abc, xyz\'s</Name>
                                            <DOB>2/1/1922</DOB>
                                            <Number>1234567896</Number>
                                            <Gender>unknown</Gender>
                                        </client>
                                        <Info>
                                            <ID>1111111111</ID>
                                            <Title>TITLE</Title>
                                        </Info>
                                        <BasicInfo>
                                            <TransDate>3/16/2011</TransDate>
                                            <Channel>1 + 1</Channel>
                                            <Ind></Ind>
                                            <Med></Med>
                                            <Comment>This is comment</Comment>
                                        </BasicInfo>
                                    </root>


            Console.WriteLine(xdoc.<root>.<client>.<Name>.Value())
            Console.WriteLine(\"    {0}\", xdoc.<root>.<client>.<Number>.Value())
            Console.WriteLine(\"    {0}\", xdoc.<root>.<Info>.<Title>.Value())
            Console.WriteLine(\"    {0}\", xdoc.<root>.<BasicInfo>.<Comment>.Value())
    

要回复问题请先登录注册