Compartir a través de


Cómo controlar prefijos de espacios de nombres (C#) (LINQ to XML)

Actualización: November 2007

En este tema se describe cómo puede controlar los prefijos de espacios de nombres al serializar un árbol XML.

En muchas situaciones, no es necesario controlar los prefijos de espacios de nombres.

Sin embargo, ciertas herramientas de programación XML requieren un control específico de los prefijos de espacios de nombres. Por ejemplo, es posible que esté manipulando una hoja de estilos XSLT o un documento XAML que contenga expresiones XPath incrustadas que hagan referencia a prefijos de espacios de nombres; en ese caso, es importante serializar el documento con dichos prefijos.

Esta es la razón más común para controlar los prefijos de espacio de nombres.

Otro motivo habitual para controlar prefijos de espacios de nombres se basa en permitir que los usuarios editen el documento XML manualmente y crear prefijos de fácil escritura. Por ejemplo, tal vez esté generando un documento XSD. Las convenciones de los esquemas sugieren el uso de xs o xsd como prefijo para el espacio de nombres de esquema.

Para controlar los prefijos de espacios de nombre, inserta atributos que declaran dichos espacios de nombres. Si declara los espacios de nombres con prefijos específicos, LINQ to XML intentará respetar los prefijos durante la serialización.

Para crear un atributo que declara un espacio de nombres con un prefijo, puede crear un atributo donde el espacio de nombres del nombre del atributo es Xmlns y el nombre del atributo es el prefijo del espacio de nombres. El valor del atributo es el URI del espacio de nombres.

Ejemplo

Este ejemplo declara dos espacios de nombre. Especifica que el espacio de nombres https://www.adventure-works.com tiene el prefijo aw y que el espacio de nombres www.fourthcoffee.com tiene el prefijo fc.

XNamespace aw = "https://www.adventure-works.com";
XNamespace fc = "www.fourthcoffee.com";
XElement root = new XElement(aw + "Root",
    new XAttribute(XNamespace.Xmlns + "aw", "https://www.adventure-works.com"),
    new XAttribute(XNamespace.Xmlns + "fc", "www.fourthcoffee.com"),
    new XElement(fc + "Child",
        new XElement(aw + "DifferentChild", "other content")
    ),
    new XElement(aw + "Child2", "c2 content"),
    new XElement(fc + "Child3", "c3 content")
);
Console.WriteLine(root);

Este ejemplo genera el siguiente resultado:

<aw:Root xmlns:aw="https://www.adventure-works.com" xmlns:fc="www.fourthcoffee.com">
  <fc:Child>
    <aw:DifferentChild>other content</aw:DifferentChild>
  </fc:Child>
  <aw:Child2>c2 content</aw:Child2>
  <fc:Child3>c3 content</fc:Child3>
</aw:Root>

Vea también

Conceptos

Espacios de nombres en C# (LINQ to XML)