Avatar billede tommer Nybegynder
15. december 2004 - 10:21 Der er 22 kommentarer og
2 løsninger

finde billeder i htmlkode og sætte højde bredde

Jeg har brug for at kunne gennemløbe noget htmlkode og finde alle billeder.
Derefter skal jeg finde højde/bredde på billederne (som ikke er defineret i htmlkoden) for så at indsætte højde/bredde i selve img tagget på de enkelte billeder....hmmmm lidt tricky eller hvad??
Avatar billede nielsbrinch Nybegynder
15. december 2004 - 10:24 #1
Det kan godt lade sig gøre.

Gennemløb hvert element på siden, tjek om typen er img. Aflæs clientHeight og clientWidth på billedet og indsæt attributterne width og height på billedet.

Det virker dog først efter billederne er hentet og vises på skærmen i deres rigtige størrelse
Avatar billede tommer Nybegynder
15. december 2004 - 11:16 #2
Det lyder godt at det kan lade sig gøre, jeg har dog brug for hjælp til selve koden da jeg ikke aner hvordan jeg gør noget af det...
Avatar billede burningice Nybegynder
15. december 2004 - 18:47 #3
nielsbrinch>> det kan desværre kun lade sig gøre hvis det er server-kontroller. Almindelig html bliver compilet til en LiteralControl, og så skal man til at bruge RegEx til at finde frem til selve <img>'taggene.
Avatar billede segato Nybegynder
17. december 2004 - 11:24 #4
Medmindre det er xhmtl så kan du smide det ind i et XmlDocument men så skal du sørge for det er wellfomed. Hvis du har fysisk adgang til selve billederne kan du åbne dem og læse høje og bredde inde i selve filen. Men ved ik om du har adgang til selve billedet?
Avatar billede nielsbrinch Nybegynder
17. december 2004 - 11:33 #5
cyberfessor, uanset hvad server-delen gør ved kontrollerne inden det bliver sendt ud til klienten, så vil det være almindelige <img>-tags som klientens browser ser. Det er det eneste den forstår. Og det er netop i klientens browser et javascript kører.

Der er derfor jeg skriver at "Det virker dog først efter billederne er hentet og vises på skærmen i deres rigtige størrelse". Jeg kan godt se jeg ikke har gjort det særligt klart.
Avatar billede nielsbrinch Nybegynder
17. december 2004 - 11:48 #6
Det var en god idé, segato.

Der er en komponent der hedder SgmlReader der kan lave html om til "xml" ... den virker fortrinligt.
Avatar billede burningice Nybegynder
17. december 2004 - 12:29 #7
nielsbrinch>>

der er forkskel på hvis billedet er erkleret som en <asp:image runat="server"> eller normalt <img>

det første billeder kan man godt få fat i via Control-collection'en, det kan man ikke med det andet.

Jeg snakker om hvordan man har skrevet sin text på selve aspx-siden, og der siger jeg, at man ikke bare kan gennemløbe Controls-collectionen og forvente at finde alle <img-tagsene> hvis de ikke er sat til runat="server".
Avatar billede nielsbrinch Nybegynder
17. december 2004 - 12:41 #8
Jeg ved det godt, vi taler lidt forbi hinanden. Det jeg snakker om, er en javascript-metode der skal gøre det. Det kan godt være det er forkert at tænke i JavaScript når det er en ASP.NET-kategori.
Avatar billede burningice Nybegynder
17. december 2004 - 13:03 #9
hehe... ja ok... gik ud fra vi snakkede om en server-side løsning :)
Avatar billede segato Nybegynder
17. december 2004 - 19:28 #10
Sqml reader fungere faktisk kun på meget simpelt html ville nok mere går får html tidy. Jeg har længe kigget efter en control der kan lave html til xml men der er ik noget rigtig godt på market endnu. Men ellers giver jeg dig ret i at regex oxo nemt kan løse problemmet.
Avatar billede burningice Nybegynder
18. december 2004 - 00:02 #11
en simpel DOM-parser burde kunne gøre tricket... det nemmeste ville være at bruge browserens eget DOM-træ, men det grø pludselig ens javascript browser-specifik :(
Avatar billede tommer Nybegynder
02. januar 2006 - 21:35 #12
send svar her alle 3
Avatar billede segato Nybegynder
02. januar 2006 - 22:03 #13
svar btw jeg fik sgml reader til at virke med stort set alt html. Hvis du vil have kode skriver du det lige!
Avatar billede nielsbrinch Nybegynder
03. januar 2006 - 11:47 #14
Jeg vil meget gerne hav ekode til SgmlReader der virker til stort set alt html. Hvad er konsekvensen? Hvad gør den hvis den finder noget den ikke kan parse?
Avatar billede burningice Nybegynder
03. januar 2006 - 14:01 #15
svar, og godt nytår til jer allesammen :)
Avatar billede burningice Nybegynder
03. januar 2006 - 14:01 #16
.
Avatar billede segato Nybegynder
04. januar 2006 - 23:47 #17
using System;
using System.IO;
using System.Xml;
using System.Collections.Generic;
using System.Text;
using Sgml;

namespace WebExtractor.Items.Helpers
{
    class HtmlCleaner
    {       
        public string CleanHtml(string html)
        {
            SgmlReader r = new SgmlReader();
            r.DocType = "HTML";

            StringReader sr = new System.IO.StringReader(html);
            r.InputStream = sr;

            XmlDocument doc = new XmlDocument();
            doc.Load(r);
           
            return doc.OuterXml;
        }

        public XmlDocument GetDocument(string html)
        {
            SgmlReader r = new SgmlReader();
            r.DocType = "HTML";

            StringReader sr = new System.IO.StringReader(html);
            r.InputStream = sr;

            XmlDocument doc = new XmlDocument();
            doc.Load(r);

            return doc;
        }

    }
}
Avatar billede segato Nybegynder
04. januar 2006 - 23:47 #18
Der få du et xmldocument fra en html streng
Avatar billede nielsbrinch Nybegynder
05. januar 2006 - 08:21 #19
Jaja, men det er da bare den almindelige SgmlReader. Jeg troede du havde lavet den om, så den kunne æde noget mere HTML end den allerede kan. Den kan nemlig ikke håndtere fejl i HTML'en som det er nu - såsom overlappende tags.
Avatar billede segato Nybegynder
05. januar 2006 - 08:42 #20
Det kan du tro den kan- Den æder alt html!
Avatar billede nielsbrinch Nybegynder
05. januar 2006 - 08:51 #21
Sejt, jeg tror lige jeg henter den nyeste version så. Tak for tippet!
Avatar billede tommer Nybegynder
05. januar 2006 - 09:50 #22
nu er jeg ikke med mere.... nyeste version af hvad?
Avatar billede nielsbrinch Nybegynder
05. januar 2006 - 09:51 #23
SgmlReader. Den version jeg kører med kan nemlig ikke æde alt html.
Avatar billede segato Nybegynder
05. januar 2006 - 12:49 #24
jeg havde også problem med den ikke ville æde alt html fordi jeg loaede den rene html fra sgml reader ind i et XmlDocument. Men hvis man i stedet loader SgmlReader in i XmlDocument så virker det på alt jeg har forsøgt på hvilket ikke er så lidt endnda. Prøv den her måde og så se om det vikke virker med alt:

public XmlDocument GetDocument(string html)
        {
            SgmlReader r = new SgmlReader();
            r.DocType = "HTML";

            StringReader sr = new System.IO.StringReader(html);
            r.InputStream = sr;

            XmlDocument doc = new XmlDocument();
            doc.Load(r);

            return doc;
        }
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester