我有一个XML文件XMLData.xml
<pdata>
<name>John</name>
<age>36</age>
</pdata>
我希望能够从ASP.NET页面上的文本框控件覆盖“name”和“age”节点。我已经找到了很多关于如何使用datagrid执行此操作的信息,但我需要为每个节点使用文本框。
任何帮助都会很棒。
答案 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 = "<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);