Gewusst wie: Steuern von Namespacepräfixen (C#) (LINQ to XML)How to: Control Namespace Prefixes (C#) (LINQ to XML)

In diesem Thema wird beschrieben, wie Sie beim Serialisieren einer XML-Struktur Namespacepräfixe steuern können.This topic describes how you can control namespace prefixes when serializing an XML tree.

In vielen Situationen ist es nicht notwendig, die Namespacepräfixe zu steuern.In many situations, it is not necessary to control namespace prefixes.

Bestimmte XML-Programmiertools erfordern jedoch eine spezifische Steuerung der Namespacepräfixe.However, certain XML programming tools require specific control of namespace prefixes. Angenommen, Sie möchten z. B. ein XSLT-Stylesheet oder ein XAML-Dokument bearbeiten, das eingebettete XPath-Ausdrücke enthält, die auf bestimmte Namespacepräfixe verweisen. In diesem Fall ist es wichtig, dass das Dokument mit diesen konkreten Präfixen serialisiert wird.For example, you might be manipulating an XSLT style sheet or a XAML document that contains embedded XPath expressions that refer to specific namespace prefixes; in this case, it is important that the document be serialized with those specific prefixes.

Dies ist der häufigste Grund für die Steuerung von Namespacepräfixen.This is the most common reason for controlling namespace prefixes.

Ein weiterer Grund für die Notwendigkeit, Namespacepräfixe zu steuern, liegt darin, dass die Benutzer das XML-Dokument manuell bearbeiten können sollen und dass Sie Namespacepräfixe erstellen möchten, die für den Benutzer einfach einzugeben sind.Another common reason for controlling namespace prefixes is that you want users to edit the XML document manually, and you want to create namespace prefixes that are convenient for the user to type. Nehmen wir z. B. an, Sie möchten ein XSD-Dokument generieren.For example, you might be generating an XSD document. Den Konventionen für Schemas zufolge verwenden Sie als Präfix für den Schemanamespace entweder xs oder xsd.Conventions for schemas suggest that you use either xs or xsd as the prefix for the schema namespace.

Zum Steuern von Namespacepräfixen fügen Sie Attribute ein, die Namespaces deklarieren.To control namespace prefixes, you insert attributes that declare namespaces. Wenn Sie die Namespaces mit bestimmten Präfixen deklarieren, versucht LINQ to XMLLINQ to XML, die Namespacepräfixe beim Serialisieren zu beachten.If you declare the namespaces with specific prefixes, LINQ to XMLLINQ to XML will attempt to honor the namespace prefixes when serializing.

Beim Erstellen eines Attributs, das einen Namespace mit einem Präfix deklariert, erstellen Sie ein Attribut, bei dem der Namespace des Namens des Attributs Xmlns lautet und der Name des Attributs das Namespacepräfix ist.To create an attribute that declares a namespace with a prefix, you create an attribute where the namespace of the name of the attribute is Xmlns, and the name of the attribute is the namespace prefix. Der Wert des Attributs ist der URI des Namespace.The value of the attribute is the URI of the namespace.

BeispielExample

Dieses Beispiel deklariert zwei Namespaces.This example declares two namespaces. Es gibt für den http://www.adventure-works.com-Namespace das Präfix aw und für den www.fourthcoffee.com-Namespace das Präfix fc an.It specifies that the http://www.adventure-works.com namespace has the prefix of aw, and that the www.fourthcoffee.com namespace has the prefix of fc.

XNamespace aw = "http://www.adventure-works.com";  
XNamespace fc = "www.fourthcoffee.com";  
XElement root = new XElement(aw + "Root",  
    new XAttribute(XNamespace.Xmlns + "aw", "http://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);  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

<aw:Root xmlns:aw="http://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>  

Siehe auchSee Also

Working with XML Namespaces (C#) (Arbeiten mit XML-Namespaces (C#))Working with XML Namespaces (C#)