Maison > développement back-end > C++ > Comment gérer correctement les espaces de noms et les préfixes lors de la création de documents XML avec XElement ?

Comment gérer correctement les espaces de noms et les préfixes lors de la création de documents XML avec XElement ?

Linda Hamilton
Libérer: 2024-12-31 11:46:10
original
523 Les gens l'ont consulté

How to Correctly Handle Namespaces and Prefixes When Creating XML Documents with XElement?

Espaces de noms XElement : un guide complet

Création de documents XML avec des préfixes de nœud

Lors de la construction de documents XML à l'aide de XElement, il est crucial pour gérer correctement les préfixes d’espace de noms. Tenter de créer directement un élément avec un préfixe, par exemple new XElement("sphinx:docset"), entraînera une exception.

Solution utilisant l'espace de noms

LINQ to XML fournit une solution élégante pour cela :

XNamespace ns = "sphinx";
XElement element = new XElement(ns + "docset");
Copier après la connexion

Cette approche ajoute l'espace de noms au nom de l'élément, garantissant la présence du préfixe souhaité.

Personnalisation des préfixes

Vous pouvez également personnaliser le préfixe pour qu'il corresponde à votre structure XML existante :

XNamespace ns = "http://url/for/sphinx";
XElement element = new XElement("container",
    new XAttribute(XNamespace.Xmlns + "sphinx", ns),
    new XElement(ns + "docset",
        new XElement(ns + "schema"),
            new XElement(ns + "field", new XAttribute("name", "subject")),
            new XElement(ns + "field", new XAttribute("name", "content")),
            new XElement(ns + "attr",
                         new XAttribute("name", "published"),
                         new XAttribute("type", "timestamp"))));
Copier après la connexion

Ceci le code génère du XML qui ressemble à votre exemple fourni :

<container xmlns:sphinx="http://url/for/sphinx">
  <sphinx:docset>
    <sphinx:schema />
    <sphinx:field name="subject" />
    <sphinx:field name="content" />
    <sphinx:attr name="published" type="timestamp" />
  </sphinx:docset>
</container>
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal