[英]C# XML - Modify a line of a node
例如,我有以下 XML 文件。 由於干凈的標識符存在“EA MagicNo”,它具有一個永遠不會被使用兩次的單一 ID。
在此示例中,您可以看到,“EA MagicNo=111”后面的“符號”是空的,並且必須獲得一個值,例如“BBB”。
<?xml version="1.0" encoding="utf-8"?>
<EAs>
<EA MagicNo="000">
<Date>2022-07-21</Date>
<Symbol>AAA</Symbol>
</EA>
<EA MagicNo="111">
<Date>2022-07-22</Date>
<Symbol></Symbol>
</EA>
</EAs>
我有一個表單應用程序並使用按鈕來做所有事情。
所以我可以用這段代碼刪除一個完整的節點:
private void Btn_Remove_Click(object sender, EventArgs e)
{
// load xml
XDocument doc = XDocument.Load(@"test.xml");
// remove a complete EA-Magic Element-Node
XElement xel = doc.Descendants("EA")
.Where(e => (string)e.Attribute("MagicNo") == "000")
.SingleOrDefault();
if (xel != null)
{
xel.Remove();
}
// save xml
doc.Save(@"test.xml");
}
結果,XML 看起來像這樣:
<?xml version="1.0" encoding="utf-8"?>
<EAs>
<EA MagicNo="111">
<Date>2022-07-22</Date>
<Symbol></Symbol>
</EA>
</EAs>
我也可以使用以下代碼添加一個完整的新節點:
private void Btn_Add_Click(object sender, EventArgs e)
{
// load xml
XDocument doc = XDocument.Load(@"test.xml");
// add a new "EA" to "EAs"
var parent = doc.Descendants("EAs")
.SingleOrDefault();
if (parent != null)
{
// create a new EA Node
XElement el =
new XElement("EA",
new XAttribute("MagicNo", "222"),
new XElement("Date", "2022-07-23"),
new XElement("Symbol", "CCC")
);
// add it
parent.Add(el);
}
但我正在努力修改現有節點的一行以添加空值“BBB”。 請您幫我解決所需的代碼行嗎?
准備好的代碼開始:
private void Btn_Modify_Click(object sender, EventArgs e)
{
// load xml
XDocument doc = XDocument.Load(@"test.xml");
// Code to modify the XElement here ...
// save xml
doc.Save(@"test.xml");
}
好像你可以只使用 Linq 來獲取空節點,然后修改每個的Value
var nodes = doc.Elements("EAs")
.SelectMany(e => e.Elements("EA"))
.SelectMany(e => e.Elements("Symbol"))
.Where(e => e.Value == "");
foreach (var node in nodes)
{
node.Value = "BBB";
}
工作解決方案:
private void Btn_Modify_Click(object sender, EventArgs e) { // load xml XDocument doc = XDocument.Load(@"test.xml"); // Code to modify the XElement here ... // identify exact Node XElement xel = doc.Descendants("EA").Where(x => (string)x.Attribute("MagicNo") == "111").Single(); // modify Value xel.Element("Symbol").Value = "BBB"; // save xml doc.Save(@"test.xml"); }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.