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>
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
Solution : Utilisation d'espaces de noms
Pour analyser correctement XML avec des espaces de noms, vous devez utiliser la stratégie suivante :
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
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!