gpt4 book ai didi

c# - 使用 XDocument 遍历节点的所有属性

转载 作者:数据小太阳 更新时间:2023-10-29 02:48:42 24 4
gpt4 key购买 nike

我有以下存储表定义的 xml。如何使用 XDocument (C# 3.5) 遍历传递的表名的每一列(每个表只出现一次)及其属性

例如:如果用户传递了 CurrencySummary,我想读取每一列及其所有属性,如 HeaderDescription、HeaderName 等。

<?xml version="1.0" encoding="utf-8" ?>
<TableDef>
<CurrencySummary>
<Column Name="Currency" HeaderDescription="Currency" HeaderName="Currency" ColumnType="TableColumnType.Text" IsHidden = "false" Position="0" Width="100" />
<Column Name="ParamortizedValue" HeaderDescription="Par/amortized value" HeaderName="paramortizedvalue" ColumnType="TableColumnType.Number" IsHidden = "false" Position="1" Width="200" />
<Column Name="PercentBondTotal" HeaderDescription="% of bond total" HeaderName="percentbondtotal" ColumnType="TableColumnType.Number" IsHidden = "false" Position="2" Width="150" />
</CurrencySummary>
<CallSchedule>
<Column Name="Calldate" HeaderDescription="Call date" HeaderName="Calldate" ColumnType="TableColumnType.Text" IsHidden = "false" Position="0" Width="100" />
<Column Name="Issue" HeaderDescription="Issue" HeaderName="Issue" ColumnType="TableColumnType.Text" IsHidden = "false" Position="1" Width="100" />
<Column Name="ParamortizedValue" HeaderDescription="Par/amortized value" HeaderName="paramortizedvalue" ColumnType="TableColumnType.Number" IsHidden = "false" Position="2" Width="200" />
<Column Name="PercentBondTotal" HeaderDescription="% of bond total" HeaderName="percentbondtotal" ColumnType="TableColumnType.Number" IsHidden = "false" Position="3" Width="150" />
</CallSchedule>
</TableDef>

我试图通过以下方式实现这一点:(编辑:根据 Henk 的建议)

var doc = XDocument.Load("TableDefinations.xml");
var cols = doc.Descendants("CurrencySummary").First();
foreach (var col in cols.Elements())
{
foreach (XAttribute at in col.Attributes())
{
//do something with the at.Name and at.Value
}
}

这是有效的方法还是有比这更好的方法?

最佳答案

这有点取决于有多少 <CurrencySummary>有,如果他们的位置很重要。

var summ = doc.Descendants("CurrencySummary").First();

foreach (var col in summ.Elements())
...

关于c# - 使用 XDocument 遍历节点的所有属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6253565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com