g_johnson
asked on
How do I add the xsi and xmlns:xsi tags to an XML file using Linq in C#?
I've never quite understood this and am struggling again. I need my XML file to look like this:
<?xml version="1.0"?>
-<eTest xsi:noNamespaceSchemaLocat ion="eTest -Schema.xs d" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+<GLEntries>
</eTest>
I am using this technique:
XDocument ardoc = new XDocument();
XElement eTest= new XElement("eTest");
ardoc.Add(eTest);
ardoc.Save(this._ARExpPath + "AR" + dt.Date.ToString("yyyyMMdd ") + ".XML");
I don't know how to get the xsi and xmlns:xsi tags (attributes?) into the eTest element.
Thanks.
<?xml version="1.0"?>
-<eTest xsi:noNamespaceSchemaLocat
+<GLEntries>
</eTest>
I am using this technique:
XDocument ardoc = new XDocument();
XElement eTest= new XElement("eTest");
ardoc.Add(eTest);
ardoc.Save(this._ARExpPath
I don't know how to get the xsi and xmlns:xsi tags (attributes?) into the eTest element.
Thanks.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
And probably a little more than you were expecting but here is one way this method could be utilized in conjunction with your GLEntries (just making up an implementation):
using System;
using System.IO;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.Generic;
namespace EE_Q28736062
{
class Program
{
static void Main(string[] args)
{
ETestSerializer test = new ETestSerializer();
test.GLEntries.Add(new GLEntry() { ID = 1, Name = "First" });
test.GenerateXml("test.xml");
}
}
[Serializable(), XmlRoot("eTest")]
public class ETestSerializer
{
private readonly List<GLEntry> fGLEntries = new List<GLEntry>();
[XmlAttribute(Namespace = "http://www.w3.org/2001/XMLSchema-instance")]
public string noNamespaceSchemaLocation = "eTest-Schema.xsd";
[XmlElement()]
public List<GLEntry> GLEntries { get { return fGLEntries; } }
public void GenerateXml(string fileName)
{
GenerateXml(new FileInfo(fileName));
}
public void GenerateXml(FileInfo file)
{
XmlSerializer serializer = new XmlSerializer(GetType());
using (TextWriter stream = new StreamWriter(file.FullName))
{
XmlSerializerNamespaces spaces = new XmlSerializerNamespaces();
spaces.Add("xsi", "http://www.w3.org/2001/XMLSchema-instance");
serializer.Serialize(stream, this, spaces);
}
}
}
[Serializable()]
public class GLEntry
{
public int ID { get; set; }
public string Name { get; set; }
}
}
Which now produces the following output --saige-
ASKER
Thanks.
Not a problem g_johnson, glad to help.
Open in new window
Which produces the following xml file --saige-