Navigation XML avec des espaces de noms dans XDocument
Lorsque vous travaillez avec du XML contenant des espaces de noms, il est essentiel de prendre en compte leur impact sur les requêtes d'éléments dans XDocument. Par défaut, les éléments XDocument sont interrogés sans prendre en compte les espaces de noms. Cela peut conduire à des résultats inattendus, comme le démontre l'exemple XML fourni :
<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}" /> </System> </E2ETraceEvent>
Dans ce scénario, le code suivant renvoie null pour xEl1 en raison de l'existence de l'espace de noms :
XDocument xDoc = XDocument.Parse(CurrentString); XElement xEl1 = xDoc.Element("E2ETraceEvent");
Résoudre le problème avec les espaces de noms
Pour naviguer correctement dans XML avec les espaces de noms, utilisez la classe XNamespace. XNamespace fournit un moyen de spécifier un espace de noms et de le combiner avec des noms d'éléments lors de l'interrogation. Voici le code révisé :
XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system"; XElement xEl2 = xDoc.Element(nsSys + "System");
Maintenant, xEl2 contiendra l'élément System avec l'espace de noms spécifié. Vous pouvez continuer à naviguer dans l'arborescence XML de la même manière, en incorporant les espaces de noms pertinents.
Notes supplémentaires
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!