Heim > Backend-Entwicklung > C++ > Wie kann ich XML-Dokumente mit Namespaces mithilfe von XDocument ordnungsgemäß analysieren?

Wie kann ich XML-Dokumente mit Namespaces mithilfe von XDocument ordnungsgemäß analysieren?

Mary-Kate Olsen
Freigeben: 2024-12-30 01:42:36
Original
550 Leute haben es durchsucht

How to Properly Parse XML Documents with Namespaces using XDocument?

So analysieren Sie XML mit Namespaces in XDocument

Beim Arbeiten mit XML, das Namespaces enthält, ist es wichtig, diese in Ihrem Code korrekt zu verarbeiten . Ohne Angabe der richtigen Namespaces kann XDocument das XML möglicherweise nicht effektiv analysieren.

Betrachten Sie das folgende XML-Beispiel:

<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>
Nach dem Login kopieren

Wenn Sie versuchen, dieses XML mit XDocument zu analysieren, ohne das anzugeben In Namespaces können für bestimmte Elemente Nullwerte auftreten. Hier ist ein Codeausschnitt, der dieses Problem veranschaulicht:

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
Nach dem Login kopieren

Lösung: Namespaces verwenden

Um XML mit Namespaces korrekt zu analysieren, müssen Sie die folgende Strategie verwenden:

  1. Definieren Sie ein Namespace-Präfix für jeden im verwendeten Namespace XML.
  2. Verwenden Sie das Namespace-Präfix, wenn Sie auf Elemente im XML verweisen.

Hier ist ein aktualisierter Codeausschnitt, der diese Lösung demonstriert:

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
Nach dem Login kopieren

Durch die Verwendung von Namespaces Korrekt können Sie sicherstellen, dass Ihr Code Daten aus XML-Dokumenten, die Namespaces enthalten, genau extrahieren und bearbeiten kann.

Das obige ist der detaillierte Inhalt vonWie kann ich XML-Dokumente mit Namespaces mithilfe von XDocument ordnungsgemäß analysieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage