Heim >Backend-Entwicklung >C++ >Wie kann ich XML-Elemente mit Namespaces mithilfe von XDocument effektiv abfragen?
Navigieren in XML mit Namespaces in XDocument
Beim Arbeiten mit XML, das Namespaces enthält, ist es wichtig, deren Auswirkungen auf die Elementabfrage in XDocument zu berücksichtigen. Standardmäßig werden XDocument-Elemente ohne Berücksichtigung von Namespaces abgefragt. Dies kann zu unerwarteten Ergebnissen führen, wie im bereitgestellten Beispiel-XML gezeigt:
<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>
In diesem Szenario gibt der folgende Code aufgrund der Existenz des Namespace Null für xEl1 zurück:
XDocument xDoc = XDocument.Parse(CurrentString); XElement xEl1 = xDoc.Element("E2ETraceEvent");
Beheben des Problems mit Namespaces
Um XML mit Namespaces korrekt zu navigieren, verwenden Sie die XNamespace-Klasse. XNamespace bietet eine Möglichkeit, einen Namespace anzugeben und ihn während der Abfrage mit Elementnamen zu kombinieren. Hier ist der überarbeitete Code:
XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system"; XElement xEl2 = xDoc.Element(nsSys + "System");
Jetzt enthält xEl2 das Systemelement mit dem angegebenen Namespace. Sie können weiterhin auf ähnliche Weise durch den XML-Baum navigieren und dabei die relevanten Namespaces einbeziehen.
Zusätzliche Hinweise
Das obige ist der detaillierte Inhalt vonWie kann ich XML-Elemente mit Namespaces mithilfe von XDocument effektiv abfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!