Annika: xml tags finden

hey,

ich habe mehr als 2000 xml dateien.
ich möchte alle verwendeten tags wissen.

die dateien sehen so aus:
<xmlitem>
  <item1>daten</item1>
  <itemxy>daten 122</itemxy>
  <itembla>blablabla</itembla>
  [...]
</xmlitem>

ich hab es so versucht aber da kommt nur quatsch bei raus:
preg_match_all("/<(.+)>(.+)</(.+)>/", $data, $matches);
preg_match_all("/<(.+)>/", $data, $matches);

ich möchte einfach nen array mit (item1, itemxy, itembla)

mag mir wer ein wenig helfen?

liebe grüße, Annika

  1. Moin!

    ich hab es so versucht aber da kommt nur quatsch bei raus:
    preg_match_all("/<(.+)>(.+)</(.+)>/", $data, $matches);
    preg_match_all("/<(.+)>/", $data, $matches);

    Nun kenne ich kein PHP (naja... Nicht gut) Aber Du verwendest ja reguläre Ausdrücke. Allerdings sind die nicht korrekt. Probier mal:

    /</?([^>]+?)/?>/
    Das sollte auf </xxx>, <xxx> und <xxx/> matchen (aber auch auf </xxx/>, aber sei's drum).

    Dein (.+) ist zu gefräßig. Es findet nämlich auch <xxx><xxx> als ein Tag. Eventuell hilft <(.+?)>. Besser ist es aber, > explizit auszuklammern mit [^>].

    -- Skeeve

  2. Hallo Annika.

    die dateien sehen so aus:
    <xmlitem>
      <item1>daten</item1>
      <itemxy>daten 122</itemxy>
      <itembla>blablabla</itembla>
      [...]
    </xmlitem>

    ich hab es so versucht aber da kommt nur quatsch bei raus:
    preg_match_all("/<(.+)>(.+)</(.+)>/", $data, $matches);
    preg_match_all("/<(.+)>/", $data, $matches);

    ich möchte einfach nen array mit (item1, itemxy, itembla)

    Schon einmal darüber nachgedacht, es richtig™ zu machen?

    Bewerkstelligen könntest du dies recht einfach per simplexml, oder alternativ auch per DOM (XML).

    Einen schönen Dienstag noch.

    Gruß, Mathias

    --
    sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:} fl:( ss:) ls:[ js:|
    debian/rules