2010-12-30 3 views
0

J'ai un fichier XML xmldata.xmlmodifier XML de la page ASP.NET zone de texte

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

Je veux être en mesure de remplacer le « nom » et le noeud « âge » d'un contrôle de zone de texte sur un ASP Page .NET. J'ai trouvé beaucoup d'informations sur la façon de faire cela avec un DataGrid mais j'ai besoin d'utiliser une zone de texte pour chaque nœud.

Toute aide serait géniale.

Répondre

0

pour cette solution:

<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(); 
} 
+0

LINQ to XML, il serait beaucoup plus simple. – SLaks

+0

@SLaks - C'est une autre possibilité, oui. –

0

Je ne suis pas 100% sûr que je comprends votre question, mais ...

Il semble que si vous avez chargé le fichier dans un XMLDocument, puis utilisé XPath pour sélectionner les objets XMLNode que vous vouliez écraser, et définir leurs propriétés de texte interne, puis réécrire le document xml qui ferait l'affaire.

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()); 
0

LINQ to XML rendrait beaucoup plus simple

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); 
Questions connexes