Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
XPath von XMLNode ermitteln?
naumann
myCSharp.de - Member



Dabei seit:
Beiträge: 61

Themenstarter:

XPath von XMLNode ermitteln?

beantworten | zitieren | melden

Hi Leute,

gibt es irgendeine Möglichkeit mir den XPath zu einem XMLNode generieren zu lassen? Ich habe nämlich 2 XML Dokumente die ich ineinander verschmelzen lasse, d.h. wenn ich 2 XML Dok. mit der gleichen Struktur habe (nur andere Unterknoten) werden die unterschiedlichen Knoten aus Dokument A in Dokument B kopiert. Ungefähr so:

Dokument A:

<Personen>
<PersonA>
<Vorname>Robert</Vorname>
<Nachname>Naumann</Nachname>
</PersonA>
</Personen>

Dokument B

<Personen>
<PersonA>
<Adresse>Hauptstraße 1</Adresse>
</PersonA>
<PersonB>
<Vorname>Max</Vorname>
<Nachname>Mustermann</Name>
</PersonB>
</Personen>

Jetzt wird Dokument B in Dokument A importiert. Es soll rauskommen:

<Personen>
<PersonA>
<Vorname>Robert</Vorname>
<Nachname>Naumann</Nachname>
<Adresse>Hauptstraße 1</Adresse>
</PersonA>
<PersonB>
<Vorname>Max</Vorname>
<Nachname>Mustermann</Name>
</PersonB>
</Personen>

In dem Importvorgang muss ich also die Pfade mitteinander vergleichen. Nur wie bekommen ich diese raus? Ich habs mit dem XPathNavigator probiert. Der hat eine Funktion "ComparePosition" die eigentlich prüft ob zwei Pfadpositionen gleich sind. Diese gibt mir bei dem Vergleich der der beiden Pfade immer false zurück, möglicherweise weil die beiden Nodes aus zwei unterschiedlichen Dokumenten stammen. Deshalb brauche ich den XPath als string.

Hat einer ne Idee? Ich hab leider nichts gefunden.
private Nachricht | Beiträge des Benutzers
Yellow
myCSharp.de - Experte

Avatar #avatar-2347.png


Dabei seit:
Beiträge: 832

beantworten | zitieren | melden

hallo naumann,

du kannst Dir den XPath rein theoretisch zusammenbauen in dem du die ParentNodes' durchläufst bis du beim Root-Knoten bist und dir über einen StringBuilder den XPath zusammen bauen, aber generell würde ich mir überlegen ob ich das Problem nicht auf andere Weise lösen könnte.

-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de
private Nachricht | Beiträge des Benutzers
naumann
myCSharp.de - Member



Dabei seit:
Beiträge: 61

Themenstarter:

beantworten | zitieren | melden

Bis jetzt mach ich das so, dass ich zwei Root Nodes an eine Funktion übergebe die bei einer Übereinstimmung die Childobjekte übergibt.

Ist halt nicht die prof. Lösung. Es gibt aber in keinem XML Objekt eine Funktion die den XPath ausgibt. Wie würdest du das Problem am besten lösen?
private Nachricht | Beiträge des Benutzers
Yellow
myCSharp.de - Experte

Avatar #avatar-2347.png


Dabei seit:
Beiträge: 832

beantworten | zitieren | melden

hallo naumann,

wie ich das Problem lösen würde? Nuja, dazu müsste ich erstmal die Wurzel des Übels kennen, also den Grund warum Du das so machen willst. Meiner Erfahrung nach bietet sich beim transformieren von XML-Daten XSLT an. Da dir die entsprechenden Strukturen bekannt sind, sollte es relativ einfach sein entsprechende Templates zu schreiben.

-yellow
Selbst ein Weg von tausend Meilen beginnt mit einem Schritt (chinesisches Sprichwort).

Mein Blog: Yellow's Blog auf sqlgut.de
private Nachricht | Beiträge des Benutzers