Parsování proměnlivých dat   zodpovězená otázka

C#, Windows Phone, HTTP/HTML, .NET, JavaScript

Ahoj,

chci si napsat mobilní aplikaci, která bude parsovat jednoduché HTML. HTML se ale může měnit a chtěl bych najít způsob, jak dynamicky změnit kód parsování bez nutnosti vydávat update celé aplikace.

Představoval bych si to například tak, že kód celé aplikace by byl v C#, ale parsovací kód bych měl v nějakém skriptovacím jazyce. Kód pro parsování bych měl u sebe na serveru a v případě potřeby bych ho na serveru změnil a aplikace by si porovnala verze a případně ho updatovala.

Je to možný postup, je správný, nebo to jde jinak a lépe?

Případně jaký skriptovací jazyk byste mi doporučili? Ideální by byla dobrá kompatibilita s .NET/C#.

Díky

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Vytvořit webovou službu, která bude provádět parsování a tu volat v aplikaci. Bude to vyžadovat připojení k Internetu, ale pokud to bude využívat více uživatelů, lepší řešení nejspíš není.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Odkud se bude brát to zdrojové HTML, které se bude parsovat?

Pokud z internetu tj. aplikace stejně bude předpokládat a potřebovat trvalé připojení k internetu, tak je nejlepší přesunout tuto logiku na server do webové služby a do WP aplikace si vrátit již zpársovaný výstup (jehož struktura by se bez update celé aplikace neměnila).

Pokud je požadavek na to, aby aplikace fungovala i offline (zdrojové HTML aplikace zná i bez připojení k internetu) a připojení bude vyžadované jen pro update parseru, tak by to bylo o něco složitější.

Jednak by parser musel řešit, že když není HTML v párserem podporovaném formátu, tak se to bude umět detekovat, aby se uživateli vynutil update.

Vlastní update parseru by pak mohl být řešen serializací a desesializací LINQ Expression (který by obsahovat kód parseru) do XML:

http://expressiontree.codeplex.com

http://archive.msdn.microsoft.com/exprse...

Aktuální "verze" parseru by pak byla uložena někde v lokálním storage aplikace v telefonu.

nahlásit spamnahlásit spam 1 / 1 odpovědětodpovědět

Tak jsem si na to začal tedy vytvářet webovou službu na platformě ASP.NET Web Api a vypadá to jako velmi slušné řešení.

Taky mě velmi zaujala ta serializace LINQ, o tom jsem vůbec nevěděl. Zkoušel jsem to API, serializace proběhne v pořádku, ale deserializace už mi hází InvalidCastException. Používal jste to osobně někdy?

nahlásit spamnahlásit spam 0 odpovědětodpovědět

V jednom projektu jsem to použil, v té době to byla ještě ta starší verze (ten druhý odkaz) a bylo to mezi projekty v .NET 4.0 a Silverlight + komunikace přes WCF.

Nepoužil jsem to ale jako knihovnu, ale přímo jako třídu vloženou do mého projektu, protože při změně ze Silverlight 4 na Silverlight 5 tam bylo potřeba něco málo upravit (některé třídy reprezentující uzly ExpressonTree se tam jmenují trochu jinak).

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback