【问题标题】:Query for all elements of a specific name with XMLDocument使用 XMLDocument 查询具有特定名称的所有元素
【发布时间】:2015-04-30 18:17:33
【问题描述】:

我有以下 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

【问题讨论】:

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


    【解决方案1】:

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

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

    这将为您提供所有帐号为List&lt;String&gt;

    【讨论】:

    • Hi rahul 最后一个问题如何修改 AccountNo 值?
    • @alicetoppo - 您可以使用SetElementValue 方法,您需要获取特定的 XElement 并应用此方法。最后保存您的 Xdocument 对象。请参考这个答案:- stackoverflow.com/a/1487764/1529657
    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 1970-01-01
    • 1970-01-01
    • 2011-05-06
    • 1970-01-01
    • 2013-09-10
    • 2019-03-27
    • 1970-01-01
    相关资源
    最近更新 更多