Maison > développement back-end > C++ > Comment générer des documents XML avec des nœuds préfixés à l'aide de XElement ?

Comment générer des documents XML avec des nœuds préfixés à l'aide de XElement ?

Barbara Streisand
Libérer: 2024-12-30 06:27:11
original
249 Les gens l'ont consulté

How to Generate XML Documents with Prefixed Nodes using XElement?

Préfixes d'espace de noms XML dans XElement

La création de documents XML avec des préfixes de nœud peut être difficile avec XElement. Cette question explore comment gérer les espaces de noms préfixés lors de l'utilisation de XElement.

Question : Comment pouvons-nous générer des documents XML avec des nœuds préfixés comme cet exemple ?

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

Exception : L'utilisation de new XElement("sphinx:docset") génère un exception :

Unhandled Exception: System.Xml.XmlException: The ':' character, hexadecimal val
  ue 0x3A, cannot be included in a name.
Copier après la connexion

Réponse : En utilisant LINQ to XML, nous pouvons facilement ajouter des espaces de noms aux éléments.

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

Pour définir des alias comme dans l'exemple, utilisez ce qui suit :

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

Ce code produira la structure XML souhaitée :

<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