读取两个元素中的 xml 文件属性
本文关键字:xml 文件属性 元素 两个 读取 | 更新日期: 2023-09-27 18:34:31
我有以下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;
下面的代码返回一个空字符串,而不是求和。
Linq to Xml 方法 - 获取根下的所有元素(为您提供聚合和插值(,并从每个元素中获取"method"属性值:
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");