Autor |
Nachricht |
jasmen
Threadersteller
Dabei seit: 05.02.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Mo 05.02.2007 17:41
Titel Regulärer Ausdruck für XML |
|
|
Hallo,
ich brauche einen regulären Ausdruck für folgendes XML-Format:
<PersonID>44444444444</PersonID>
<LastName>Müller</LastName>
<FirstName>Kenn</FirstName>
<TitleID>12345678903</TitleID>
<SalutationID>0</SalutationID>
<Sex>male</Sex>
<DateOfBirth>1954-09-09</DateOfBirth>
<EMail>mail@xxx.com</EMail>
Dabei möchte ich einfach den Text zwischen den Tags ausschneiden.
Kann mir jemand helfen?
Danke und schöne Grüsse
jasmen
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Mo 05.02.2007 18:08
Titel
|
|
|
Zum Ausschneiden zwischen zwei Tags kannst du sowas nehmen:
Code: | /<(.+?)>(.+?)<\/\1>/ |
Ergebnis steht dann in \2
|
|
|
|
|
Anzeige
|
|
|
Benutzer 28377
Account gelöscht
Ort: -
|
Verfasst Mo 05.02.2007 20:52
Titel
|
|
|
Hmmmmmmmmmmm .+?
.
entspricht einen beliebige Zeichen, ausser Newline (\n)
+
enstpricht dem Min/Max-Quantor {1,n}, erkennt also das vorhergehende Zeichen ein Mal oder beliebig oft
?
enstpricht dem Min/Max-Quantor {0,1}, erkennt also das vorhergehende Zeichen null oder ein Mal
Ja wie denn nun, soll er was finden oder nicht ?
.+? ergibt keinen Sinn
Entweder gierig .+ oder nicht gierig mit .*?
PHP stellt auch für XML schon Funktionen bereit, wodurch man auf Regex verzichten kann.
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Mo 05.02.2007 21:46
Titel
|
|
|
Doch, gibt wohl Sinn. Vielleicht ein Wunder? Noe, aber hinter 'nem anderen Quantifizierer dient es als nur lokaler gierig/genuegsam-Schalter. Der Unterschied zwischen + und * hat ja nix mit Gier zu tun, sondern nur mit dem minimalen Auftreten (0 oder 1 mal).
|
|
|
|
|
Account gelöscht
Ort: -
Alter: -
|
Verfasst Mo 05.02.2007 22:18
Titel
|
|
|
Leider kannste hierarchische Daten i.Allg. nur schlecht durch RegExp abgrasen. (Denkbar der Fall
Code: | <elem1>
<elem1>
</elem1>
<elem1>
|
Stabiler und einfacher ist es, einen Tokenizer zu schreiben oder auch direkt auf fertige XML-Bibliotheken zum Parsen der Daten zurückzugreifen.
|
|
|
|
|
schachbrett
Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht:
|
Verfasst Mo 05.02.2007 22:51
Titel
|
|
|
Naja, das geht zwar auch noch - aber du hast natuerlich voellig Recht. Allerdings hat der jasmen doch gar keine solche Schachtelung... der hat ja noch nicht mal 'nen richtigen XML-Baum - nur 'n paar Daten mit Tag-Lappen links+rechts
|
|
|
|
|
Benutzer 28377
Account gelöscht
Ort: -
|
Verfasst Di 06.02.2007 08:46
Titel
|
|
|
Zitat: | paar Daten mit Tag-Lappen links+rechts |
Stimmt allerdings: '~<([^>]+)>(.+)</\1>~s'
|
|
|
|
|
jasmen
Threadersteller
Dabei seit: 05.02.2007
Ort: -
Alter: -
Geschlecht: -
|
Verfasst Di 06.02.2007 10:11
Titel
|
|
|
Hallo,
@all
vielen lieben Dank für die schnelle Hilfe!
Meine Datei sieht folgendermassen aus:
Code: |
<n:Response xmlns:lib="urn:www-deutschepost-de:TestDomain/Library/1.0/common" xmlns:n="urn:www-deutschepost-de:TestDomain/Library/1.0/seekBookResponse">
<Book>
<Title>testA Practical Guide to Testing Object-Oriented Software</Title>
<Author>
<PersonID>11111111111</PersonID>
<LastName>Sykes</LastName>
<FirstName>David A.</FirstName>
<TitleID>12345678901</TitleID>
<SalutationID>2</SalutationID>
<Sex>male</Sex>
<DateOfBirth>1970-01-01</DateOfBirth>
<EMail>d.skyes@tbd.com</EMail>
</Author>
<Author>
<PersonID>22222222222</PersonID>
<LastName>McGregor</LastName>
<FirstName>John D.</FirstName>
<TitleID>12345678901</TitleID>
<SalutationID>1</SalutationID>
<Sex>male</Sex>
<DateOfBirth>1950-12-24</DateOfBirth>
<EMail>j.McGregor@tbd.com</EMail>
</Author>
<ISBN>0-201-32564-0</ISBN>
<Publisher>Addison Wesley</Publisher>
<Year_published>2001</Year_published>
</Book>
<Book>
<Title>Agile Software Development Ecosystems</Title>
<Author>
<PersonID>33333333333</PersonID>
<LastName>Highsmith</LastName>
<FirstName>Jim</FirstName>
<TitleID>12345678902</TitleID>
<SalutationID>2</SalutationID>
<Sex>male</Sex>
<DateOfBirth>1965-02-28</DateOfBirth>
<EMail>j.highsmith@tbd.com</EMail>
</Author>
<ISBN>0-201-76043-6</ISBN>
<Publisher>Addison Wesley</Publisher>
<Year_published>2002</Year_published>
</Book>
</n:Response> |
Was für einen reg.Ausdruck soll ich hier verwenden, um die Daten zwischen den Tags rauszuholen?
Danke
jasmen
|
|
|
|
|
|
|
|
Ähnliche Themen |
SQL-Statement und regulärer Ausdruck
Regulärer Ausdruck gesucht
Regulärer Ausdruck / Hilfe
[PHP] Regulärer Ausdruck gesucht
Kurzer regulärer Ausdruck für PHP gesucht
regulärer ausdruck gesucht, um XML-tags zu formen
|
|