[英]Insert new XML node using LINQ
XML:1 aaa 2 bbb
码
var doc = XDocument.Load (Server.MapPath(".") + "\\Questions.config");
var elements = from element in doc.Descendants("Question")
select new
{
Id = element.Element("Id").Value,
Text = element.Element("Text").Value,
Reserver = element.Element("Reserver") != null
};
StringBuilder builder = new StringBuilder();
foreach (var question in elements)
{
builder.AppendLine(question.Id + "-" + question.Text);
}
myTextBox.Text = builder.ToString();
如何将新节点“问题”插入XML文件
你想做这样的事吗?
var doc = XDocument.Load (Server.MapPath(".") + "\\Questions.config");
var elements = from element in doc.Descendants("Question")
select new
{
Id = element.Element("Id").Value,
Text = element.Element("Text").Value,
Reserver = element.Element("Reserver") != null
};
StringBuilder builder = new StringBuilder();
foreach (var question in elements)
{
builder.AppendLine(question.Id + "-" + question.Text);
}
myTextBox.Text = builder.ToString();
编辑:如果你想更新每个问题,那么你必须稍微修改上面的代码。
var elements = from element in doc.Descendants("Question")
select new
{
Id = element.Element("Id"),
Text = element.Element("Text"),
Reserver = element.Element("Reserver")
};
StringBuilder builder = new StringBuilder();
foreach (var question in elements)
{
// Read
builder.AppendLine(question.Id.Value + "-" + question.Text.Value);
// Write
question.Reserver.Value = "True";
}
myTextBox.Text = builder.ToString();
通过这种方式,您不再选择值,而是选择XElement,因此您可以修改XML。 还要记住使用XDocument.Save()
保存文件。
目前还不清楚你的问题到底意味着什么,但更新XML文件的基本过程将是:
doc.Save("file.xml")
或类似的东西保存XML文档 没有更精确的要求,很难更精确。 但是,如果您想为文档中的每个Text
节点添加“问题x:”前缀,其中x是问题的ID,您可以编写如下内容:
var doc = XDocument.Load("file.xml");
var elements = doc.Descendants("Question");
foreach (var question in elements)
{
int id = (int) question.Element("ID");
XElement textElement = question.Element("Text");
textElement.Value = "Question: " + id + " = " + textElement.Value;
}
doc.Save("changed.xml");
或者将每个“aaa”Text元素更改为“kkk”:
var doc = XDocument.Load("file.xml");
var elements = doc.Descendants("Text")
.Where(x => x.Value == "aaa");
foreach (var textElement in elements)
{
textElement.Value = "kkk";
}
doc.Save("changed.xml");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.