. Net xml serialization: namespace prefix control
. Net proporciona dos mecanismos de serialización XML principales: dataContractSerializer
y xmlSerializer
. Sin embargo, los prefijos del espacio de nombres que generan por defecto se gestionan mediante mecanismos internos, que limitan la necesidad de prefijos personalizados.
use xmlSerializeNamespaces
Si necesita controlar el alias de espacio de nombres, la clase xmlSerializeNamespaces
es ideal. Permite especificar explícitamente alias para un espacio de nombres específico en XML serializado.
El siguiente ejemplo del código muestra cómo controlar el alias de espacio de nombres usando xmlSerializeNamespaces
:
[XmlRoot("Node", Namespace = "http://flibble")]
public class MyType
{
[XmlElement("childNode")]
public string Value { get; set; }
}
static class Program
{
static void Main()
{
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("myNamespace", "http://flibble");
XmlSerializer xser = new XmlSerializer(typeof(MyType));
xser.Serialize(Console.Out, new MyType(), ns);
}
}
Este código asigna el alias "myNamespace" al "http: // flibble ". La salida XML serializada es la siguiente:
something in here
use xmlattributeverrides El tiempo de ejecución
cambia el espacio de nombres dinámicamente, y puede usar la clase xmlattributeverrides . Permite anular la configuración predeterminada del espacio de nombres para las propiedades de un tipo específico.
xmlattributeverrides :
XmlAttributeOverrides ovrd = new XmlAttributeOverrides();
ovrd.Add(typeof(MyType), "childNode", new XmlAttributeOverrides()
{
{ typeof(XmlElementAttribute), new XmlElementAttribute("childNode", "http://alternateNamespace") }
});
XmlSerializer xser = new XmlSerializer(typeof(MyType), ovrd);
xser.Serialize(Console.Out, new MyType());
Este código anula el espacio de nombres predeterminado de la propiedad childNode , apuntándolo a "
http: // alternateNamespace ".
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3