16. marts 2003 - 10:56Der er
24 kommentarer og 1 løsning
En kickass stringTokenizer....
Hvis jeg nu har noget html som jeg skal lave om i et java program.
feks. <tr> <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> </tr> <tr> <td>tekst i første række under col1</td> <td>tekst i første række under col2</td> <td>tekst i første række under col3</td> <td>tekst i første række under col4</td> </tr> <tr> <td>tekst i anden række under col1</td> <td>tekst i anden række under col2</td> <td>tekst i anden række under col3</td> <td>tekst i anden række under col4</td> </tr>
det skal laves om så den sidste <td></td> ryger ned i en ny <tr><td rowspan=3></td> Så det her
<tr> <td>tekst i anden række under col1</td> <td>tekst i anden række under col2</td> <td>tekst i anden række under col3</td> <td>tekst i anden række under col4</td> </tr>
kommer til at se sådan ud
<tr> <td>tekst i anden række under col1</td> <td>tekst i anden række under col2</td> <td>tekst i anden række under col3</td> </tr> <tr> <td rowspan=3>Lang tekst der skal flyttes ned i næste linie</td> </tr>
Hvordan gør man det nemmest og har i noget kode er det jo endnu bedre =) Problemet er at det er inden i en tabel som er inden i en tabel plus jeg ved ikke hvor mange linier der kommer til at være ialt... Jeg er bare lidt på bar bund så alle ideer er velkomne.
Hos Computerworld it-jobbank er vi stolte af at fortsætte det gode partnerskab med folkene bag IT-DAY – efter vores mening Danmarks bedste karrieremesse for unge og erfarne it-kandidater.
Hvis du bruger XHTML 1.0, så er det relativt nemt at lave en SAX parser der laver den konvertering.
[og jeg kan endda godt skrive noget til dig !]
Hvis det er "HTML der ser OK ud i Internet Explorer", så er du lidt på herrens mark.
Det kritiske er vel om du nemt kan identificere det pågældende linier.
Hvis du kan det så må det være muligt at strikke noget sammen a la:
open input file open output file while more lines in input file { read line from input file if line matches criteria { write 3 modified line sto output file } else { write line unchanged to output file } }
Det var mere en ide jeg kom på - Hvis man nu forestillede sig, at der blev sendt noget xml, som der skulle have en bestemt form ville det være en ide at validere det op imod et xsd skema. Du har ret i, at i forhold til spørgsmålet er det måske et long shot :-)
Hehe det er sådan at jeg i mit java program får en liste der ligger på en session listen er lavet til html når jeg får den og jeg skal så lige rette lidt i htmlen inden den bliver sendt tilbage til browseren.... Jeg behøves ikke identificere linierne det samme skal ske for hver linie sidste felt skal flyttes ned på ny linie med colspan=3 så den får samme længde som de tre felter i forige linie...
Nej. Jeg er bange for ta jeg ikke helt har forstået det.
Er:
<tr> <td>col1</td> <td>col2</td> <td>col3</td> <td>col4</td> </tr> <tr> <td>tekst i første række under col1</td> <td>tekst i første række under col2</td> <td>tekst i første række under col3</td> <td>tekst i første række under col4</td> </tr> <tr> <td>tekst i anden række under col1</td> <td>tekst i anden række under col2</td> <td>tekst i anden række under col3</td> <td>tekst i anden række under col4</td> </tr>
Det er en streng jeg har. Den ligger på session og jeg hiver den ned i min servlet i servletten skal jeg så ændre den... Det lyder nok mystisk men jeg har en standard jeg skal følge og bliver derfor nød til at gøre det...
public static void main(String[] args) { String s = "<tr>" + "<td>col1</td>" + "<td>col2</td>" + "<td>col3</td>" + "<td>col4</td>" + "</tr>" + "<tr>" + "<td>tekst i første række under col1</td>" + "<td>tekst i første række under col2</td>" + "<td>tekst i første række under col3</td>" + "</tr>" + "<tr>" + "<td>tekst i anden række under col1</td>" + "<td>tekst i anden række under col2</td>" + "<td>tekst i anden række under col3</td>" + "<td>tekst i anden række under col4</td>" + "</tr>"; System.out.println(manip(s)); } private static String manip(String s) { int ix = s.length() - 5; while(!s.substring(ix, ix + 5).equals("</td>")) ix--; int ix2 = ix; while(!s.substring(ix2, ix2 + 4).equals("<td>")) ix2--; return s.substring(0, ix2) + "</tr>" + "<tr>" + "<td rowspan=3>" + s.substring(ix2 + 4, ix) + "</td>" + "</tr>";
PS: Hvis det skal outputtes som HTML så synes jeg at der skulle sættes nogen linie-skift ind. Browseren er ligeglad, men de mennesker der skal debugge koden for at rette HTML til vil uden tvivl foretrække nogle linieskift !
Med den nævnte pointe at når HTML'en engang ender ude i en browser og der er et eller andet der ser forkert ud og en eller anden bruger "View Source", så er det altså rart med nogle linie-skift.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.