[c#]读取 xml 文件两个元素中的属性

标签: Linq XML C#
发布时间: 2017/2/28 21:07:49
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有下面的 xml 文件,想在两个元素的内部属性值。

XML:

<Var>
  <Sour>
    <Processing>
      <Interpolation method="akimaspline"/>
      <Aggregation method="summation" />
    </Processing>
  </Sour>
</Var >

C# 中︰

XmlDocument doc = new XmlDocument();
doc.Load(xmlFile);
XmlNodeList elemNode = doc.GetElementsByTagName(Aggregation );
for (int y = 0; y < elemNode.Count; y++)
    result = elemNode[y].Attributes[method].Value;

下面的代码返回空的字符串,而不是求和。

解决方法 1:

Linq 到 Xml的方法 — — 获取 (给你聚集和插值) 的根目录下的所有元素,并都得到 '方法' 提供的每个元素的属性值︰

var xdoc = XDocument.Load(xmlFile);
var methods = xdoc.Root.Elements()
                  .Select(e => (string)e.Attribute("method"))
                  .Distinct();

输出︰

[ "summation", "linear" ]

单独获取值︰

var aggregationMethod = (string)xdoc.Root.Element("Aggregation").Attribute("method");

更新︰ 后您已经更改了 xml, Processing 不再是你的文件的根。你有几个选项现在---只是选择所有元素手动从根

var method = (string)xdoc.Root.Element("Sour")
                         .Element("Processing")
                         .Element("Aggregation").Attribute("method");

您可以使用 Descendants 来找到 Aggregation 元素而不指定路径

var method = (string)xdoc.Descendants("Aggregation").First().Attribute("method");

或者你可以使用 XPath 指定完整路径或相对路径累积元素︰

var method = (string)xdoc.XPathSelectElement("//Aggregation").Attribute("method");
官方微信
官方QQ群
31647020