Eingebettete <iframe> mittels Konsole in Array speichern

iMrQuestion

Mitglied
Heyho,

und zwar möchte ich gerne folgendes bei einem Java-Programm über die Konsole als Text eingeben und dann jede Zeile bzw. immer wenn eine neuer iFrame beginnt in ein Array speichern. Also bei 0 soll der erste Link sein, bei 1 der 2. usw.
Das halt beleibig oft bzw. mit einer vorgegeben Anzahl.
Ich hab dies auch schon mit String.split(\n) etc. versucht, war aber leider nicht erfolgreich :/
Hatte auch die Idee, das er immer teilen könnte, sobald "><" vorkommt. Hab dazu aber leider keien Möglichkeit gefunden

HTML:
<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>

<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>

<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>

<iframe width="560" height="315" src="[MEDIA=youtube]XfYJFtkBLLk[/MEDIA]" ........." allowfullscreen></iframe>


Hoffe Ihr könnt mir weiterhelfen.
MfG
MrQuestion
 
Zuletzt bearbeitet von einem Moderator:

iMrQuestion

Mitglied
Geht das nicht?
Java:
String[] meinArray = s.split("><");
Doch das geht schon. Allerdings kommt das zweimal vor. Habe es gerade mit "</iframe>" probiert und das klappt dann. Muss es dann allerdings wieder hinzufügen, da ich das ja brauche und .split das ja wegstreicht. Wollte das eigentlich vermeiden.

Wenn ich das allerdings so machen würde, hab ich das Problem, dass ich eine Exception "Index ... out of bounds for length ..." bekomme. Das liegt offenbar daran, dass die Strings zusammen zu lang sind. Wenn ich das Probeweise stark kürze, bekomme ich die Exception nicht mehr. So hilft mir das aber nicht wiklich.
Hat da jmd eine Idee?
 

mihe7

Top Contributor
Für HTML gibt es als Standardantwort JSoup. Wenn Du Dein Vorhaben zu Fuß umsetzen willst, hier mal eine Möglichkeit (Achtung: quick & dirty, ungetestet)
Java:
public List<String> getNonNestedTags(String tagName, String content) {
    String openingTag = "<" + tagName;
    String closingTag = "</" + tagName;

    List<String> result = new ArrayList<>();

    int opening = content.indexOf(openingTag);
    while (opening != -1) {
        int closing = content.indexOf(closingTag, opening);
        if (closing != -1) {
            closing = content.indexOf(">", closing);
        }
        if (closing != -1) {
            closing++;
            result.add(content.substring(opening, closing));
        }
        opening = closing;
    }
    return result;
}
 

iMrQuestion

Mitglied
Heyho und danke für eure Antworten.

Zwecks der Antwort von mihe7 hab ich nicht durchgeblickt und war auch etwas verwirrt zwecks HTML.

Ich hab das Konzept am Ende verworfen, da das Array nie mehr als 3 Links speichern konnte, da es ihm zu groß war.
Am Ende habe ich dann mit einem Buffered Reader die Links aus einer .txt ausgelesen und durch mehrere Methoden gleich ausgegeben, sodass nicht mehrere Links gespeichert werden mussten.
Damit habe ich am Ende das Programm fertig bekommen^^

Vielen Dank für eure Hilfe.

Wenn das nicht von selbst passiert kann das Thema gerne geschlossen werden.
 

Neue Themen


Oben