Håller och ska editera en XM-fil i ASP.NET. Har börjat lite själv. Vet inte om det är den bästa lösningen: Hej! Det ser vettigt ut, men det bordet väl vara SelectNodes(languages/language) ASP.NET & XML
XML-filen ser ut som följande:
<xml blbla>
<languages>
<language id="EN">
<pages>
<company>
<topic>This is a topic</topic>
<text>This is my text</text>
</company>
<services>
<topic>This is a topic</topic>
</services>
</pages>
</language>
<language id="SV">
<pages>
<topic>Detta är en rubrik</topic>
<text>Detta är en text</text>
</pages>
</language>
</languages>
</xml>
Nu vill jag att man ska kunna lägga till en ny sträng, som default kommer att hamna under <language id="EN"> men jag vill också att elementet ska hamna under de andra språken men då som en tom sträng. Jag har skapat en klass som tar ett namn, text, category, sida som argument och vill åstadkomma detta. Jag har testat lite grann, har lyckats "ta" mig till rätt ställe men vet inte hur jag ska få in mitt nya element och text under rätt ställe. Är nybörjare på detta (XML) kan jag tillägga.
Någon som kan leda mig rätt?Sv: ASP.NET & XML
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(GetLanguagePath());
XmlNode xmlNodeList = xmlDoc.SelectSingleNode("/languages");
int i = 0;
foreach (XmlNode xmlNode in xmlNodeList)
{
foreach (XmlNode newXmlNode in xmlNode)
{
if (newXmlNode.Name == category)
{
foreach(XmlNode xNode in newXmlNode)
{
if (xNode.Name == page)
{
XmlElement xmlElement = xmlDoc.CreateElement(name);
string attribute = xmlNode.Attributes["id"].InnerText;
if (attribute == "EN")
{
xmlElement.InnerText = text;
}
else
{
xmlElement.InnerText = "";
}
xNode.AppendChild(xmlElement);
}
}
}
}
}
xmlDoc.Save(GetLanguagePath());
Denna kod har ingen felhanteringen eller någonting.
Är det något man kan förbättra?Sv: ASP.NET & XML
alltså du ville loopa igenom alla language noder?
XmlTextReader/Writer är klart snabbare men om det inte är så stora filer är detta sätt helt OK och mycket enklare att koda.
Ola