Hej! Jag ska skriva till en xml-fil nu för första gången, tidigare har jag endast använt xml-filer för att läsa redan existerande data så att skriva till en xml-fil är lite av ett mysterium för mig just nu.
Xml-filen ser ut så här:
<?xml version="1.0" encoding="utf-8"?>
<staticinquirytexts>
<text>
<companyID>a49d7f13-caa6-49a7-8dc7-5452ea7bf097</companyID>
<SV>Statisk förfrågantext på Svenska</SV>
<EN>Static inquirytext in English</EN>
</text>
</staticinquirytexts>
det är denna som jag vill kunna skapa med c#:
<text>
<companyID>a49d7f13-caa6-49a7-8dc7-5452ea7bf097</companyID>
<SV>Statisk förfrågantext på Svenska</SV>
<EN>Static inquirytext in English</EN>
</text>
jag lyckas skapa nya nodes med createNode, men jag vet inte hur jag ska göra så att <companyID>, <SV> och <EN> blir childnodes till <text>...
jag har börjat skriva en klass för att hantera min xml-fil:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Common;
using System.Xml;
using System.Text.RegularExpressions;
using SmartOff_2011.Database;
using System.IO;
using System.Text;
namespace SmartOff_2011.Localization
{
public class staticinquirytext
{
private string filepath;
private HttpServerUtility _Server;
public staticinquirytext(HttpServerUtility Server, Language lang)
{
this._Server = Server;
this.filepath = _Server.MapPath("~/App_Data/Localization/staticinquirytext.xml");
}
public string GetInquirytext(string companyID, string lang)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
foreach (XmlNode node in xmlDoc.LastChild.ChildNodes)
{
if (node.Attributes["companyID"].Value == companyID)
{
return _Server.HtmlDecode(node.Attributes[lang].Value.ToString());
}
}
throw new Exception("Kunde inte hitta någon text med FöretagsID: " + companyID);
}
public void WriteInquirytext(string companyID)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(filepath);
XmlNode newNode = xmlDoc.CreateNode(XmlNodeType.Element, "text", "");
//newNode.InnerText = "";
xmlDoc.DocumentElement.AppendChild(newNode);
newNode = xmlDoc.CreateNode(XmlNodeType.Element, "companyID", "");
newNode.InnerText = companyID;
xmlDoc.DocumentElement.AppendChild(newNode);
newNode = xmlDoc.CreateNode(XmlNodeType.Element, "SV", "");
xmlDoc.DocumentElement.AppendChild(newNode);
newNode = xmlDoc.CreateNode(XmlNodeType.Element, "EN", "");
xmlDoc.DocumentElement.AppendChild(newNode);
newNode = xmlDoc.CreateNode(XmlNodeType.Element, "text", "");
xmlDoc.DocumentElement.AppendChild(newNode);
xmlDoc.Save(filepath);
}
}
}
Så är det någon som kan vägleda mig i hur jag får önskat resultat?
nu har jag löst det problemet, men nu måste jag också kunna söka igenom xml-filen för att se om det finns en ID-node med ett speciellt ID. Det sparas som inner text i noden. Så hur gör man det? Jag letade efter en contains() metod, men det fanns ingen vad jag kunde se.