Я использую XmlWriter в сочетании с сериализацией Xml. Я могу нормально выводить XML, но мне кажется, что избежать включения атрибута xmlns в XmlWriter мне не удается.
Для написания начала документа я использую следующее:
Writer.WriteStartDocument();
Writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
Создав мой XmlWriter, я затем перебираю созданные мной SitemapNodes и записываю их в базовый построитель строк с помощью сериализации следующим образом:
foreach (uk.co.andrewrea.SitemapNode node in List)
{
Serializer.Serialize(Writer, node);
}
Как я уже сказал, это работает нормально, НО указанное пространство имен для корневого элемента не включено. Каждый раз, когда я пытаюсь физически написать атрибут xmlns, я получаю исключение, что система xmlns зарезервирована системой для использования XML, поэтому в основном я не могу ее использовать.
Я знаю, как это сделать с помощью XmlTextWriter, а также с помощью класса XmlDocument, но мне нужно понять, как этого добиться с помощью XmlWriter и с помощью сериализации.
Следующая попытка также вызывает исключение о том, что это пространство имен резервируется.
foreach (uk.co.andrewrea.SitemapNode node in List)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("xmlns", "http://www.sitemaps.org/schemas/sitemap/0.9");
Serializer.Serialize(Writer, node, ns);
}
Exception Details: System.ArgumentException: Prefix "xmlns" is reserved for use by XML.