c# - 如何从嵌套的 xml 节点获取属性值?

标签 c# xml linq-to-xml xelement

我的 XElement 对象格式如下:

<Setting guid="3bcedf55-b75f-456b-b90a-a92cbbb022ga">
    <PatientFieldList>
        <PatientFieldSetting PatientName="UserDecision" PatentFieldLength="64" />
        <PatientFieldSetting PatientName="prohibited" PatentFieldLength="128" />
    </PatientFieldList>
</Setting>

我必须获取所有节点中所有属性的值,但我不知道如何:/我尝试过

xml.Elements("PatientFieldList")

xml.Descendants("PatientsSettingsFieldsList").Where(x => x.Attribute("PatentFieldLength").Value == 64)`

我有很多这样的节点,所以我想知道是否有简单的方法可以通过“[]”或其他方式访问这些属性。

最佳答案

代码:

using System;
using System.Linq;
using System.Xml.Linq

var xml = "<Setting ...";
var doc = XElement.Parse(xml);
int i; // for int parse
var q = from node in doc.Descendants("PatientFieldSetting")
        let name = node.Attribute("PatientName")
        let length = node.Attribute("PatentFieldLength")
        select new { Name = (name != null) ? name.Value : "", Length = (length != null && Int32.TryParse(length.Value, out i)) ? i : 0 };

foreach (var node in q)
{
    Console.WriteLine("Name={0}, Length={1}", node.Name, node.Length);
}

输出:

Name=UserDecision, Length=64
Name=prohibited, Length=128

关于c# - 如何从嵌套的 xml 节点获取属性值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4538213/

相关文章:

c# - 如何使用 WCF 解决将共享相同数据源但将为每个客户端具有单独实例/ session 的服务器-客户端系统

javascript - XML 属性在 Node.js xml2js 中不起作用

java - 关闭 log4j.xml 中的调试或日志消息

c# - Linq 到 RSS 提要?

c# - Lambda 表达式作为 xUnit 中的内联数据

c# - 如何在 Startup.cs 之外设置数据库连接字符串用户名和密码?

java - 尝试使用标签名称使用新的 XML 节点更新同一 XML 文件

xml - 以编程方式修改 .csproj 文件

c# - 这两个 XML LINQ 查询有什么区别?

c# - 如何在与 SignalGo 套接字断开连接后自动调用登录功能