I'm creating a xml-file from code using Linq to XML. The code is prety simple:
XNamespace appvisumnamespace = XNamespace.Get("http://appvisum.com");
XDocument doc = new XDocument(new XDeclaration("1.0", "utf-8", "yes"),
new XComment(""),
new XElement("AppConfig", new object[] {
(from section in this select section.ToXml())
}));
foreach (XElement e in doc.Root.DescendantsAndSelf())
{
if (e.Name.Namespace == XNamespace.None)
{
e.Name = appvisumnamespace.GetName(e.Name.LocalName);
}
}
doc.Save(HttpContext.Current.Server.MapPath("~/App_Data/AppConfig2.xml"));
This generates the following output:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<!---->
<AppConfig xmlns="http://appvisum.com">
<Section name="Wordpress">
<Setting name="url" value="Wordpress-Url" />
<Setting name="username" value="Wordpress-Username" />
<Setting name="password" value="Wordpress-Password" />
<Setting name="formuid" value="Wordpress-ForumId" />
</Section>
<Section name="AppVisum">
<Section name="Caching">
<Setting name="cacheupdateinterval" value="30" />
</Section>
<Setting name="test" value="test" />
</Section>
<Section name="Blog">
<Setting name="commentsenabled" value="true" />
<Setting name="categoriesenabled" value="true" />
</Section>
<Section name="Akismet">
<Setting name="apikey" value="Akismet-API-Key" />
<Setting name="pageurl" value="PageUrl" />
</Section>
</AppConfig>
Now, what I simply want is to change the third line into this:
<AppConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://appvisum.com ../XmlSchemas/AppConfig.xsd" xmlns="http://appvisum.com">
But for some reason I can't seem to do that. I've tried several methods but none of theme worked. Any help would be great. I would like to get this to work without having to turn to old fashion XML-text-writers or string-replacements. There has to be some way to do this.