[英]Adding or Updating XML Node
我需要添加幾個子節點或更新該節點(如果已存在)。 從下面的小樣本中可以看到,我有一個帶有子節點的節點,另一個沒有子節點。 假設我有一個來自SQL表的定義,我想將值添加到節點。
XML
<workbook>
<datasources>
<column datatype='real' name='[CONTRACT_PAYMENT_AMT]' role='measure' type='quantitative'>
<desc>
<formatted-text>
<run>The amount being paid on the contract.</run>
</formatted-text>
</desc>
</column>
<column datatype='real' name='[CONTRACT_PAYMENT_DATE]' role='measure' type='quantitative'>
</column>
</datasources>
這是我只需要獲取name屬性的代碼。 列是可能包含數據類型,名稱,角色和類型的類。
IEnumerable<string> names = from Columns in XDocument.Load(path).Descendants("column")
select Columns.Attribute("name").Value;
foreach (string name in names)
{
}
這旨在作為該方法的開始。
我在思考如何存儲值並更新XML文檔時遇到麻煩,或者僅查看每個節點並在文檔中進行更新時遇到麻煩。 有任何想法嗎?
編輯-新代碼將新值添加到當前的“運行”節點,但不添加新的定義。
var document = XDocument.Load(path);
var elements = (from column in document.Descendants("column")
select new
{
AttributeName = column.Attribute("name").Value,
Run = column.Descendants("run").FirstOrDefault() ?? new XElement("run")
}).ToList();
foreach (var item in elements)
{
if (item.Run == null) continue;
else
{
item.Run.Value = GetVariable(item.AttributeName);
// Getvariable is the method that returns the definition
}
}
document.Save(path);
您可以點以下邏輯:
var document = XDocument.Load(path);
var elements = (from column in document.Descendants("column")
select new
{
AttributeName = column.Attribute("name").Value,
Parent = column,
Run = column.Descendants("run").FirstOrDefault()
}).ToList();
foreach(var item in elements)
{
XElement run;
if (item.Run == null)
{
run = new XElement("run");
item.Parent.Add(
new XElement("desc",
new XElement("formatted-text",
run
)
)
);
}
else
{
run = item.Run;
}
if(item.AttributeName == "BlaBlaOne")
{
run.Value = "Your definition here";
}
}
document.Save(path);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.