使用XMLDocument查询特定名称的所有元素

时间:2015-04-30 18:17:34

标签: c# xml linq linq-to-xml xml-namespaces

我有以下XML名称Sample.xml,我试图用XDocument查询accountNo:

<Request xmlns="http://CompanyName.AppName.version1">
    <Person>
        <AccountNo>83838</AccountNo>
        <FirstName>Tom</FirstName>
        <LastName>Jackson</LastName>
    </Person>
    <Person>
        <AccountNo>789875</AccountNo>
        <FirstName>Chris</FirstName>
        <LastName>Smith</LastName>
    </Person>

在C#中使用以下代码,我可以获取第一个人的帐户号

XDocument xmlDoc = XDocument.Load("Sample.xml");    
XNamespace nsSys = "http://CompanyName.AppName.version1";
XElement xEl2 = xmlDoc.Element(nsSys + "Request ");
XElement xEl3 = xEl2.Element(nsSys + "Person");
XElement xEl4 = xEl3.Element(nsSys + "AccountNo");
String sValue = xEl4.Value;

输出:83838

如何编写代码来提取所有人的帐户号码 例如。

83838

789875

1 个答案:

答案 0 :(得分:0)

您可以使用Select简单地投影数据: -

XNamespace ns = "http://CompanyName.AppName.version1";
var AccountNumbers = xdoc.Descendants(ns + "Person")
                         .Select(x => (string)x.Element(ns + "AccountNo")).ToList();

这会将所有帐户号码都显示为List<String>