C# 从ASP.NET页面上的文本框编辑XML

C# 从ASP.NET页面上的文本框编辑XML,c#,asp.net,xml,C#,Asp.net,Xml,我有一个XML文件XMLData.XML <pdata> <name>John</name> <age>36</age> </pdata> 约翰 36 我希望能够从ASP.NET页面上的文本框控件覆盖“name”和“age”节点。我已经找到了很多关于如何使用datagrid实现这一点的信息,但是我需要为每个节点使用一个文本框 任何帮助都会很棒。尝试一下: <form id="form1" ru

我有一个XML文件XMLData.XML

<pdata>
     <name>John</name>
     <age>36</age>
</pdata>

约翰
36
我希望能够从ASP.NET页面上的文本框控件覆盖“name”和“age”节点。我已经找到了很多关于如何使用datagrid实现这一点的信息,但是我需要为每个节点使用一个文本框

任何帮助都会很棒。

尝试一下:

<form id="form1" runat="server">
<div>
    <asp:TextBox ID="TextBox1" runat="server" Height="251px" TextMode="MultiLine" Width="510px">
</asp:TextBox>
</div>
</form>


受保护的无效页面加载(对象发送方,事件参数e)
{
string xml=“root>aaa”;
XmlDocument doc=新的XmlDocument();
doc.LoadXml(xml);
StringBuilder sb=新的StringBuilder();
XmlWriterSettings=新的XmlWriterSettings();
settings.Indent=true;
XmlWriter=XmlWriter.Create(sb,设置);
书面文件(作者);
writer.Close();
this.TextBox1.Text=sb.ToString();
}

我不能100%肯定我理解你的问题,但是

看起来,如果您将文件加载到一个XMLDocument中,然后使用XPath选择要覆盖的XMLNode对象,并设置其内部文本属性,然后将xml文档写回即可

XMLDocument doc = new XMLDocument();
doc.load("filepath");
XmlNode root = doc.DocumentElement;
XmlNode name = root.SelectSingleNode("/pdata/name");
name.InnerText = TextBox.Value;
doc.WriteTo(new XmlWriter());

Linq转换为XML将使其更加简单

    string path = Path.Combine(Server.MapPath("."), "App_Data\\XMLData.xml");
    XDocument doc = XDocument.Load(path);
    XElement myData = doc.Elements("pdata").Single();
    myData.ReplaceNodes(
        new XElement("name", NameText.Text.Trim()),
        new XElement("age", AgeText.Text.Trim())
    );
    doc.Save(path);

LINQ转换为XML将使其更加简单。@SLaks-这是另一种可能性,是的。
    string path = Path.Combine(Server.MapPath("."), "App_Data\\XMLData.xml");
    XDocument doc = XDocument.Load(path);
    XElement myData = doc.Elements("pdata").Single();
    myData.ReplaceNodes(
        new XElement("name", NameText.Text.Trim()),
        new XElement("age", AgeText.Text.Trim())
    );
    doc.Save(path);