mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Do 25.04.2024 15:38 Benutzername: Passwort: Auto-Login

Thema: Regulärer Ausdruck für XML vom 05.02.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> Regulärer Ausdruck für XML
Seite: 1, 2, 3  Weiter
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

Antworten mit Zitat Zum Seitenanfang

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? *Schnief*

Danke und schöne Grüsse
jasmen
  View user's profile Private Nachricht senden
schachbrett

Dabei seit: 11.10.2006
Ort: Köln
Alter: -
Geschlecht: Männlich
Verfasst Mo 05.02.2007 18:08
Titel

Antworten mit Zitat Zum Seitenanfang

Zum Ausschneiden zwischen zwei Tags kannst du sowas nehmen:

Code:
/<(.+?)>(.+?)<\/\1>/


Ergebnis steht dann in \2
  View user's profile Private Nachricht senden
Anzeige
Anzeige
Benutzer 28377
Account gelöscht


Ort: -

Verfasst Mo 05.02.2007 20:52
Titel

Antworten mit Zitat Zum Seitenanfang

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 Lächel
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: Männlich
Verfasst Mo 05.02.2007 21:46
Titel

Antworten mit Zitat Zum Seitenanfang

Doch, gibt wohl Sinn. Vielleicht ein Wunder? Lächel 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).
  View user's profile Private Nachricht senden
Account gelöscht


Ort: -
Alter: -
Verfasst Mo 05.02.2007 22:18
Titel

Antworten mit Zitat Zum Seitenanfang

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: Männlich
Verfasst Mo 05.02.2007 22:51
Titel

Antworten mit Zitat Zum Seitenanfang

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 Lächel
  View user's profile Private Nachricht senden
Benutzer 28377
Account gelöscht


Ort: -

Verfasst Di 06.02.2007 08:46
Titel

Antworten mit Zitat Zum Seitenanfang

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

Antworten mit Zitat Zum Seitenanfang

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
  View user's profile Private Nachricht senden
 
Ä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
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2, 3  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.