preguntas Así que todavía estoy preguntando sobre este tema :-(xmlns = vacías "" después de la serialización XML
lo tanto, crear un objeto, decorar con la serialización XML atributos, por lo que he visto agrego una espacio de nombres vacío a las colecciones de la serialización XML espacio de nombre a fin de no obtener los atributos superfluos que no tenía la intención de tener
Editar:. El atributo que quiero decir es esto:
<url xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:xsd="http://www.w3.org/2001/XMLSchema"; xmlns="">
por lo que me da dos extra atributos.
Después de investigaciones adicionales si cambio el principio del documento a partir de: **
writer.WriteStartElement("urlset","http://www.sitemaps.org/schemas/sitemap/0.9");
a
writer.WriteStartElement("urlset");
** Entonces no consigo los vacíos xmlns = "" atributo en el etiquetas url. Esto es genial, pero no se requiere que el elemento raíz tiene xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
, es decir .:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
Pero aún así obtener una xmlns=""
atributo vacío en el tipo de serie.
[XmlRoot(ElementName = "url", Namespace="")]
public class SitemapNode
{
[XmlElement(ElementName = "loc")]
public string Location { get; set; }
[XmlElement(ElementName = "lastmod")]
public DateTime LastModified { get; set; }
[XmlElement(ElementName = "changefreq")]
public SitemapChangeFrequency ChangeFrequency { get; set; }
[XmlElement(ElementName = "priority")]
public decimal Priority { get; set; }
public SitemapNode()
{
Location = String.Empty;
LastModified = DateTime.Now;
ChangeFrequency = SitemapChangeFrequency.monthly;
Priority = 0.5M;
}
public SitemapNode(string location, DateTime lastModified, SitemapChangeFrequency changeFrequency, decimal priority)
{
Location = location;
LastModified = lastModified;
ChangeFrequency = changeFrequency;
Priority = priority;
}
}
Entonces la siguiente manera para anexar a mi XmlWriter:
foreach (uk.co.andrewrea.SitemapNode node in List)
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add(String.Empty, String.Empty);
Serializer.Serialize(Writer, node, ns);
}
Esto funciona bien, excepto yo me quedo con un xmlns emtpy = "" como este
<url xmlns="">
Cualquiera ¿algunas ideas? Nuevamente puedo lograr esto usando XmlTextWriter y XmlDocument pero necesito lograrlo usando XmlWriter.
Cualquier ayuda es muy apreciada.
> Agrego un espacio de nombre vacío a las colecciones de nombre de serie de xml para no obtener los atributos superfluos que no tenía la intención de tener. ¿Puede profundizar en esto? ¿Qué quieres decir con atributos superfluos? – jro