Hallo Gunnar,
Dein regulärer Ausdruck versagt wie gesagt schon bei
<trkpt lat="53.188185" lon="7.216993"/>
(Kurzschreibweise)
<trkpt lat='53.188185' lon='7.216993'></trkpt>
(anderen Anführungszeichen)
<trkpt lat="53.188185" lon="7.216993"></trkpt>
oder<trkpt lat="53.188185" lon="7.216993" ></trkpt>
(anderen Whitespace-Zeichen)
Er versagt völlig bei
<trkpt lon="7.216993" lat="53.188185"></trkpt>
(andere Reihenfolge der Attribute)
Na und? Ist ja auch nur angepasst an dem Beispiel. Also wenn aber blabla Möglichkeiten ins Spiel kommen, natürlich ist dann eine Anpassung erforderlich. Bei deinen fiktiven Beispielen passt ja schon grösstenteils <trkpt.*="(.*)".*"(.*)".*>
wobei Attribut Reihenfolge sich auch noch durch Nennung des Namens verhindern ließe. Aber die Energie um hier fiktive (Da geht's aber nicht) Beispiel zu offerieren, könntest du besser darauf verwenden das für deine(denn nur darum geht's ja) Bedürfnisse anzupassen, der OP bräuchte es nämlich nicht, sofern die Struktur einheitlich bleibt.
Aus XML-Sicht sind all diese Schreibweisen völlig äquivalent. Ein verarbeitendendes Programm muss bei all diesen Schreibweisen dasselbe Ergebnis liefern. Ein richtiger XML-Parser wird das tun. Ein regulärer Ausdruck nicht.
Ach, und wie macht ein XML-Parser das? Sind die internen Routinen nicht gleich basierend?
Wie kompliziert du den Ausdruck auch bauen magst (regulär[^Chomsky-Hierarchie] wird er dann nicht sein), ich werde eine XML-Schreibweise finden, bei der er versagt. Wetten?
Würde ich gerne mal sehen und wäre bestimmt auch mal gut investierte Energie. Allerdings sollte die Quelldatei dann aber auch problemlos durch zb. simpleXML zu parsen sein. Na, dann lass mal sehen, bin gespannt.
Gruss
Henry