Используемая вами перегрузка CreateElement
принимает префикс в качестве первого аргумента, локальное имя в качестве второго и пространство имен в качестве третьего. Если вам не нужно пространство имен, не используйте эту перегрузку. Просто используйте тот, который принимает локальное имя в качестве единственного аргумента. Затем добавьте ваши данные отдельно как дочерние элементы и атрибуты.
var xmlDom = new XmlDocument();
XmlElement root = xmlDom.CreateElement("Rulebase");
xmlDom.AppendChild(root);
XmlElement data = xmlDom.CreateElement("Data");
root.AppendChild(data);
XmlAttribute attribute = xmlDom.CreateAttribute("author");
attribute.Value = "username";
data.Attributes.Append(attribute);
attribute = xmlDom.CreateAttribute("date");
attribute.Value = XmlConvert.ToString(DateTime.Now, XmlDateTimeSerializationMode.RoundtripKind);
data.Attributes.Append(attribute);
Console.WriteLine(xmlDom.OuterXml);
Создает (добавлено форматирование)
<Rulebase>
<Data author="username" date="2011-07-13T22:44:27.5488853-04:00" />
</Rulebase>
Использование XmlDocument
для генерации XML довольно утомительно. В .NET есть много лучших способов, таких как XmlSerializer
и DataContractSerializer
. Вы также можете использовать Linq-to-Xml и XElement
. Или вы можете использовать XmlWriter.Create()
. Много вариантов.