【问题标题】:How to access the properties on a XML Node via linq?如何通过 linq 访问 XML 节点上的属性?
【发布时间】:2011-09-22 08:41:44
【问题描述】:

我阅读了this 的帖子。

我有这个 XML:

<?xml version="1.0" encoding="utf-8" ?>
    <Export version="" srcSys="" dstSys="" srcDatabase="" timeStamp="">

    </Export>

这是我尝试过的,但没有运气:

var xml = XElement.Parse(BuyingModule.Properties.Resources.Export);

Func<XElement, string, string> GetAttribute = (e, property) => e.Elements("property").Where(p => p.Attribute("name").Value == property).Single().Value;

var query = from record in xml.Elements("Export")
            select record;

var prop = GetAttribute(query.FirstOrDefault(), "version");

如何访问“导出”节点的properties

我需要设置那些properties

【问题讨论】:

    标签: c# .net xml linq linq-to-xml


    【解决方案1】:

    Export 元素没有 properties 元素,这是您的 GetAttribute 方法试图找到的。

    我猜你实际上想要:

    var element = xml.Element("Export"); // Just get the first element
    var version = (string) element.Attribute("version");
    

    我不清楚您为什么在这里使用查询表达式和委托 - 只是事情比您需要的更复杂。但是Attribute(XName) 可能是您所缺少的...

    【讨论】:

    • 感谢乔恩的帮助。看起来我不需要第一行(var element = xml.Element("Export");)。我直接去了:var version = xml.Attribute("version");
    • @Willem:啊 - 我假设因为您在查询中寻找 Export 元素,所以您实际解析的 XML 上面有一个顶级元素...
    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 2012-09-04
    • 1970-01-01
    • 2012-02-04
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    • 1970-01-01
    相关资源
    最近更新 更多