Maison > développement back-end > C++ > Comment analyser correctement les documents XML avec des espaces de noms à l'aide de XDocument ?

Comment analyser correctement les documents XML avec des espaces de noms à l'aide de XDocument ?

Mary-Kate Olsen
Libérer: 2024-12-30 01:42:36
original
545 Les gens l'ont consulté

How to Properly Parse XML Documents with Namespaces using XDocument?

Comment analyser du XML avec des espaces de noms dans XDocument

Lorsque vous travaillez avec du XML contenant des espaces de noms, il est important de les gérer correctement dans votre code . Sans spécifier les espaces de noms corrects, XDocument risque de ne pas être en mesure d'analyser le XML efficacement.

Considérez l'exemple XML suivant :

<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
  <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
    <EventID>589828</EventID>
    <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}">
    </Correlation>
  </System>
</E2ETraceEvent>
Copier après la connexion

Si vous tentez d'analyser ce XML à l'aide de XDocument sans spécifier le espaces de noms, vous pouvez rencontrer des valeurs nulles pour certains éléments. Voici un extrait de code qui illustre ce problème :

XDocument xDoc = XDocument.Parse(XMLString);
XElement xEl1 = xDoc.Element("E2ETraceEvent");
XElement xEl2 = xEl1.Element("System");
XElement xEl3 = xEl2.Element("Correlation");
XAttribute xAtt1 = xEl3.Attribute("ActivityID");
String sValue = xAtt1.Value; // Returns null
Copier après la connexion

Solution : Utilisation d'espaces de noms

Pour analyser correctement XML avec des espaces de noms, vous devez utiliser la stratégie suivante :

  1. Définissez un préfixe d'espace de noms pour chaque espace de noms utilisé dans le XML.
  2. Utilisez le préfixe d'espace de noms lors du référencement d'éléments dans le XML.

Voici un extrait de code mis à jour qui illustre cette solution :

XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system";
XElement xEl2 = xDoc.Element(nsSys + "System");
XElement xEl3 = xEl2.Element(nsSys + "Correlation");
XAttribute xAtt1 = xEl3.Attribute("ActivityID");
String sValue = xAtt1.Value; // Returns the ActivityID
Copier après la connexion

En utilisant des espaces de noms correctement, vous pouvez vous assurer que votre code peut extraire et manipuler avec précision les données des documents XML contenant des espaces de noms.

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