提问人:Tue Sandbæk 提问时间:3/15/2023 最后编辑:Tue Sandbæk 更新时间:3/17/2023 访问量:46
在 XML 中更新 ChildNode
update a childnode in xml
问:
我有一个xml fil,我想在其中更新其中一个节点。 我没有错误,代码对 xml 做了一些事情,文件上的时间戳发生了变化。 但是文档内部没有更新。
我有这个xml文件:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<CGTemplateDATA>
<title>Reden i Smedager</title>
<text>Det er tidligt på sæsonen. Vi håber på bedre vejr og en mage til Clyde.</text>
<reference>Læs mere om storkene på storkene.dk</reference>
</CGTemplateDATA>
我使用这个脚本:
XmlNode root = doc.DocumentElement;
//Get node
XmlNode nodeTitle = doc.DocumentElement.SelectSingleNode("title");
//Create a new title element
XmlElement elem = doc.CreateElement("title");
elem.InnerText = txtTitle.Text;
//Replace the title element.
root.ReplaceChild(elem, nodeTitle);
答:
0赞
Yitzhak Khabinsky
3/15/2023
#1
使用 LINQ to XML API 更好、更容易。自 2007 年以来,它在 .Net Framework 中可用。
该方法可以完成这项工作。.SetValue()
下面是一个链接,您可以在其中查看如何在 ASP.NET 中检索文本框值:从 Asp.Net TextBox 中检索值
c#
void Main()
{
// XDocument xdoc = XDocument.Load(<fullyQualifiedPath>);
XDocument xdoc = XDocument.Parse(@"<CGTemplateDATA>
<title>Reden i Smedager</title>
<text>Det er tidligt på sæsonen. Vi håber på bedre vejr og en mage til Clyde.</text>
<reference>Læs mere om storkene på storkene.dk</reference>
</CGTemplateDATA>");
xdoc.Element("CGTemplateDATA").Element("title").SetValue("New Title");
// or even better option
xdoc.Descendants("title").FirstOrDefault().SetValue("Even Better Title");
}
输出
<CGTemplateDATA>
<title>New Title</title>
<text>Det er tidligt på sæsonen. Vi håber på bedre vejr og en mage til Clyde.</text>
<reference>Læs mere om storkene på storkene.dk</reference>
</CGTemplateDATA>
评论
0赞
Tue Sandbæk
3/15/2023
除了文档的时间戳之外,它不会更改任何内容,也不会给我任何错误。
0赞
Yitzhak Khabinsky
3/15/2023
我的答案是遵循最小可重现的示例模式。你按原样运行它,它正在工作,并产生所需的输出。
0赞
Tue Sandbæk
3/16/2023
我不明白吗?是否应该在解析中只写xml文档的路径?
0赞
Yitzhak Khabinsky
3/16/2023
如果您需要从文件系统加载 XML 文件,我在答案中添加了一个注释行。如果您的 XML 文件与您作为示例提供的文件不同,则需要编辑您的问题并提供真实的 XML。
0赞
Tue Sandbæk
3/17/2023
谢谢。现在我只需要在字段内获取正确的文本。我已经更新了我的问题...
评论