在ASP.NET页面上从文本框编辑XML

时间:2010-12-30 02:56:17

标签: c# asp.net xml

我有一个XML文件XMLData.xml

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

我希望能够从ASP.NET页面上的文本框控件覆盖“name”和“age”节点。我已经找到了很多关于如何使用datagrid执行此操作的信息,但我需要为每个节点使用文本框。

任何帮助都会很棒。

3 个答案:

答案 0 :(得分:0)

尝试一下:

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

protected void Page_Load(object sender, EventArgs e)
{
    string xml = "&lt;root><name>aaa</name></root>";
    XmlDocument doc = new XmlDocument();
    doc.LoadXml(xml);
    StringBuilder sb = new StringBuilder ();
    XmlWriterSettings settings = new XmlWriterSettings ();
    settings.Indent = true;
    XmlWriter writer = XmlWriter.Create(sb, settings);
    doc.WriteTo(writer);
    writer.Close();

    this.TextBox1.Text = sb.ToString();
}

答案 1 :(得分:0)

我不是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());

答案 2 :(得分:0)

Linq to 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);