Gewusst wie: Steuern von Namespacepräfixen (C#) (LINQ to XML)
Aktualisiert: November 2007
In diesem Thema wird beschrieben, wie Sie beim Serialisieren einer XML-Struktur Namespacepräfixe steuern können.
In vielen Situationen ist es nicht notwendig, die Namespacepräfixe zu steuern.
Bei bestimmten XML-Programmiertools müssen jedoch Namespacepräfixe spezifisch gesteuert werden. Wenn Sie z. B. ein XSLT-Stylesheet oder ein XAML-Dokument bearbeiten möchten, das eingebettete XPath-Ausdrücke enthält, die auf bestimmte Namespacepräfixe verweisen, ist es wichtig, dass das Dokument mit diesen konkreten Präfixen serialisiert wird.
Dies ist der häufigste Grund für das Steuern von Namespacepräfixen.
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. Nehmen wir z. B. an, Sie möchten ein XSD-Dokument generieren. Den Konventionen für Schemas zufolge verwenden Sie als Präfix für den Schemanamespace entweder xs oder xsd.
Zum Steuern von Namespacepräfixen fügen Sie Attribute ein, die Namespaces deklarieren. Wenn Sie die Namespaces mit bestimmten Präfixen deklarieren, versucht LINQ to XML, die Namespacepräfixe beim Serialisieren zu beachten.
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. Der Attributwert ist der URI des Namespace.
Beispiel
Dieses Beispiel deklariert zwei 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.
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);
Dieses Beispiel führt zur folgenden Ausgabe:
<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>